2011-06-30 21 views
20

"Daha fazla bilgi" bağlantısını tıklayarak göster/gizlemek istediğim bir LinearLayout var. Ben/gizlemek göstermek içinAnimasyonlar ve ayarlarVerimlilik

moreDetailsSection.setVisibility(View.VISIBLE); 

veya

moreDetailsSection.setVisibility(View.GONE); 

arayarak bunu. Bu iyi çalışıyor, ancak düzenleme alanlarının güzelce kaymasını sağlayan bir animasyon eklemek istedim, ancak bu sadece alan ilk kez görünür hale getirilir, eğer gizler ve tekrar gösterirsem alan aniden ortaya çıkar. .

 AnimationSet set = new AnimationSet(true); 

     Animation animation = new AlphaAnimation(0.0f, 1.0f); 
     animation.setDuration(250); 
     set.addAnimation(animation); 

     animation = new TranslateAnimation(
      Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f, 
      Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f 
    ); 
     animation.setDuration(150); 
     set.addAnimation(animation); 

     LayoutAnimationController controller = 
      new LayoutAnimationController(set, 0.25f); 
     moreDetailsSection.setLayoutAnimation(controller); 

bu ben düzeni ve sadece ilk kez gösterecek HER zaman çalışır hale getirmek nasıl Herhangi bir tavsiye: Burada animasyon kodudur (moreDetailsSection söz konusu Düzen olan)?

cevap

14

Daha FazlaDetaysSection öğesinin ilk başta SINIRSIZ olduğunu varsayalım. Sadece Animasyon nesnesini oluşturmanız ve daha fazla ayrıntı linki tıklandığında, aşağıdaki kodu çağırmanız yeterlidir.

moreDetailsSection.startAnimation(animation); 
moreDetailsSection.setVisibility(View.VISIBLE); 
O düzen için görünümde bu satırını kullanabilirsiniz
+0

Bu çıkıyor Görünümün sınırlarını bilmesi gereken bir animasyonu kullandığınızda ilk önce VISIBLE 'ın görünürlüğü. – milosmns

2

: Bu görünürlük var `GONE` durumdayken ayarlamak gerekir bu yüzden, Görünüm ölçülen olmayacak

android:animateLayoutChanges="true" 
+0

Otomatik ve basit animasyonlar için, işte bu yol. – milosmns

İlgili konular