6

Po uruchomieniu aplikacji zostanie uruchomiona Activity, która powinna mieć przezroczysty nagłówek, a to, co jest obecnie pokazane w tle, powinno zostać zamazane.Sposób przezroczystego tła aktywności i rozmycie tła

enter image description here

jestem w stanie uzyskać przejrzystość. Ale nie jestem w stanie wymyślić, jak zamazać tło. Na przykład, jeśli uruchomię aplikację z ekranu głównego, ekran główny powinien być widoczny, ale niewyraźny.

Mam pomysł, aby użyć bufora ramki, aby uzyskać bieżące wyświetlane dane, ale jak przekonwertować to na bitmapę, której można użyć do narysowania obrazu bez zapisywania obrazu i bezpośredniego korzystania z danych.

Wiem też, że możemy wykonać zrzut ekranu przez naciskając przycisk zasilania i głośności. Czy ktoś ma pomysł, gdzie jest kod w Androidzie, aby to zrobić? Moja aplikacja będzie miała dostęp do systemu.

Odpowiedz

4

jak zamazać tło?

Można użyć RenderScript dostępne w bibliotece wsparcia

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; 
    } 
} 

zobaczyć this link więcej szczegółów

lub użyć Blurry

Czy ktoś ma pomysł, gdzie jest kod w Androidzie to zrobić?

do robienia zrzutu ekranu z ekranu aplikacji zobaczyć this link

+3

Zajmuje bitmapę jako wejście. Mój problem polega na tym, że wszystko, co kryje się za moją aktywnością, np. Ekran główny, powinno zostać zamazane, próbowałem uzyskać bitmapę z widoku katalogu operacyjnego, ale to po prostu zwraca mi tło mojego widoku (które ustawiam jako przezroczyste z obrazem), a nie w domu ekran. Chcę czegoś takiego jak WindowManager.LayoutParams.FLAG_BLUR_BEHIND, który mógłby zamazać wszystko w tle. Jak mogę to zrobić? – VinayChoudhary99

4

Kiedyś to dać efekt rozmycia do mojego edycji tekstu tle, można go modyfikować zgodnie z własnymi preferencjami, bawić się z kryciem:

<?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> 

alternatywnie, może być zainteresowany w this lub this

Jako jeszcze jedną alternatywę można użyć małego rozmycia bitmapę i powtórzyć go:

<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" 
    > 

Następnie przygotować:

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
     android:src="@drawable/back" 
     android:tileMode="repeat" /> 
Powiązane problemy