2016-03-29 20 views
1

için alfa gradyanı uygulayın.Bir ViewGroup üzerinde bir degrade alfa oluşturmaya çalışırken, tüm ViewGroup

GradientDrawable'ı kullanabileceğimi biliyorum, ancak bu yalnızca arka plana uygulanacaktır.

Alt görünümler de dahil olmak üzere tüm görünüme uygulanacak alfaya ihtiyacım var.

Sadece ben ile yapabileceğiniz gibi viewGroup için alfa ayarı gibi:

_relativeLayout.setAlpha(1); 

ben subviews için onu uygulamak doesnt bir arka plan degrade alfa ayarlarsanız.

Aynı efekti nasıl ancak bir degrade ile alabilirim?

Şimdiden teşekkürler.

+0

geçersiz kılma 'dispatchDraw' veya aramaları özel' ViewGroup' – pskink

+0

Ve ne ben orada yapmalıyım arasında 'draw' yöntemlerini yapmak için basit bir DFS algoritması uygulayabilir? alfa'yı kendi alt görünümlerine de uygulayacak mı? – Nanoc

+1

http://stackoverflow.com/questions/31135714/make-complex-view-gradiently-transparent sayfasına bakın, codehare.io'ya bazı kodları yolladım ancak şu an olduğu gibi görünüyor (http://codeshare.io/ZQHcj) ya da belki de sonsuza dek öldü, ben – pskink

cevap

1

Gün içinde bir çok

void setAlphaTransitively(View view, float alpha) { 
    if (view == null) { 
     return; 
    } 

    view.setAlpha(alpha); 
    if (view instanceof ViewGroup) { 
     ViewGroup viewGroup = (ViewGroup) view; 
     for (int index = 0; index < viewGroup.getChildCount(); index++) { 
      View child = viewGroup.getChildAt(index); 
      setAlphaTransitively(child, alpha); 
     } 
    } 
} 
İlgili konular