SORU
11 Temmuz 2010, Pazar


Bulanık ya da loş arka plan ne zaman Android PopupWindow aktif

popup.dismiss çağrıldığında ya da bulanıklık ya da benim popup pencere* *4, ve unblur/kullanarak arka plan dim, ben geldiğimde arka plan dim edebilmek için istiyorum.

Düzen parametreler FLAG_BLUR_BEHIND FLAG_DIM_BEHIND Uygulama benim etkinlik için çalıştık, ama bu sadece görüntü ve arka plan loş anda benim uygulaması başlatıldı görünür.

Nasıl bulanık/sadece pop-up ile karartma yapabilir miyim?

CEVAP
23 Mayıs 2012, ÇARŞAMBA


Soru Popupwindow yaklaşık sınıfı, henüz herkes Dialog sınıfı kullanan cevap verdi. Eğer buysa Popupwindow getWindow() bir yöntem yok çünkü Popupwindow sınıfı kullanmak istiyorsanız oldukça fazla işe yaramaz.

Aslında Popupwindow ile çalışan bir çözüm buldum. Arka plan etkinliği için kullandığınız xml dosyasının kök FrameLayout Bir tek gerektirir. Framelayout eleman android:foreground bir etiket verebilir. Bu etiketi ne yaptığı tüm aktivite (eğer Framelayout xml dosyasının kök öğesi ise, üstüne katmanlı olacak drawable bir kaynak belirtin. Daha sonra opaklık (setAlpha()) ön drawable kontrol edebilirsiniz.

İstediğiniz herhangi bir drawable kaynak kullanabilirsiniz, ama eğer sadece bir karartma etkisi istiyorsanız, root olarak <shape> etiketi ile drawable klasöründe bir xml dosyası oluşturun.

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <solid android:color="#000000" />
</shape>

(shape öğe hakkında daha fazla bilgi için http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape). Drawable öğe şeffaf kılacak renk etiketi (e.alfa değeri belirtmek istemedim unutmayın g #ff000000). Bunun nedeni herhangi bir kodlanmış alfa değeri bizim kod setAlpha() ile herhangi bir yeni alpha değerleri geçersiz gibi görünüyor, bunu istemiyoruz. Ancak, bu drawable madde başlangıçta opak, katı, şeffaf olmayan) anlamına gelir. Etkinlikte şeffaf yapmak istiyoruz onCreate() yöntem.

İşte Framelayout xml öğesi kodu:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@ id/mainmenu"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:foreground="@drawable/shape_window_dim" >
...
... your activity's content
...
</FrameLayout>

İşte Aktivitenin onCreate() metodu:

public void onCreate( Bundle savedInstanceState)
{
  super.onCreate( savedInstanceState);

  setContentView( R.layout.activity_mainmenu);

  //
  // Your own Activity initialization code
  //

  layout_MainMenu = (FrameLayout) findViewById( R.id.mainmenu);
  layout_MainMenu.getForeground().setAlpha( 0);
}

Son olarak, etkinlik loş kodu:

layout_MainMenu.getForeground().setAlpha( 220); // dim

layout_MainMenu.getForeground().setAlpha( 0); // restore

Alfa değerleri 255 (görünmez) 0 (opak). -Dim BM aktivite ne zaman Popupwindow göndermelisiniz.

Ve Popupwindow gösteren kayıtsız kodu dahil etmedim, ama burada yapılabilir nasıl bir bağlantı var: http://www.mobilemancer.com/2011/01/08/popup-window-in-android/

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • RickardRick

    RickardRick

    9 Mart 2007
  • SegaAmerica

    SegaAmerica

    5 Mart 2008