web-dev-qa-db-ja.com

アクティビティの背景を透明にして背景をぼかす方法

アプリを起動すると、Activityが起動します。これには透明なヘッダーがあり、現在背景に表示されているものはすべてぼやけているはずです。

enter image description here

透明感が出ます。しかし、背景をぼかす方法がわかりません。たとえば、ホーム画面からアプリを起動すると、ホーム画面は表示されますがぼやけているはずです。

フレームバッファを使用して現在表示されているデータを取得することを考えていますが、それをビットマップに変換して、画像を保存せずに直接データを使用して画像を描画する方法を説明します。

また、電源ボタンと音量ボタンを押すことでスクリーンショットを撮ることができることも知っています。 Androidのコードがどこにあるのか、誰かが知っていますか?私のアプリはシステムにアクセスできます。

7

背景をぼかす方法は?

サポートライブラリで利用可能なRenderScriptを使用できます

public class BlurBuilder {
    private static final float BITMAP_SCALE = 0.4f;
    private static final float BLUR_RADIUS = 7.5f;

    public static Bitmap blur(Context context, Bitmap image) {
        int width = Math.round(image.getWidth() * BITMAP_SCALE);
        int height = Math.round(image.getHeight() * BITMAP_SCALE);

        Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
        Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);

        RenderScript rs = RenderScript.create(context);
        ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
        Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
        Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
        theIntrinsic.setRadius(BLUR_RADIUS);
        theIntrinsic.setInput(tmpIn);
        theIntrinsic.forEach(tmpOut);
        tmpOut.copyTo(outputBitmap);

        return outputBitmap;
    }
}

詳細については このリンク を参照してください

または、 Blurry を使用できます

Androidのコードがどこにあるのか、誰かが知っていますか?

アプリ画面のスクリーンショットを撮るには、 このリンク を参照してください。

5
N J

これを使用して、編集テキストの背景にぼかし効果を与えました。好みに応じて変更したり、不透明度を調整したりできます。

<?xml version="1.0" encoding="utf-8"?><!--  res/drawable/rounded_edittext.xml -->
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <gradient
        Android:centerColor="#33FFFFFF"
        Android:endColor="#33FFFFFF"
        Android:gradientRadius="270"
        Android:startColor="#33FFFFFF"
        Android:type="radial" />
    <corners
        Android:bottomLeftRadius="25dp"
        Android:bottomRightRadius="25dp"
        Android:topLeftRadius="25dp"
        Android:topRightRadius="25dp" />
</shape>

あるいは、 this または this に興味があるかもしれません

もう1つの方法として、小さなぼかしビットマップを使用してそれを繰り返すことができます。

    <xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    Android:id="@+id/MainLayout"
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical"
    Android:background="@drawable/backrepeat"
    >

次に準備します:

    <bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:src="@drawable/back" 
        Android:tileMode="repeat" />
4
Skynet