2013-06-12 14 views
8

İki düğmem var. İlk düğmeye basıldığında, düzeni mizanpajın üstüne ve ekranın üst kısmına çeviri yapıyorum. Ancak, sorunum ilk olarak geldi. ikinci düzeninin tıklama olayları düzeni hala önceki pozisyonda ateş olsun.Sonus bu çözüm nedir? Google'da olduğu kadar SO üzerinde de çok şey buldum ama yine de doğru çözümü henüz alamıyorum.So Lütfen bana yardım edin Benim bu sorun için.İki düzen canlandırıldığında Dinleyici davranışını tıklatın

TranslateAnimation tr1 = new TranslateAnimation(0, 0, 0, -1100); 
     tr1.setDuration(1000); 
     tr1.setFillAfter(true); 
     layout_login.startAnimation(tr1); 
     tr1.setAnimationListener(new AnimationListener() { 

      public void onAnimationStart(Animation animation) { 

      } 

      public void onAnimationRepeat(Animation animation) { 

      } 

      public void onAnimationEnd(Animation animation) { 
       layout_signup.setVisibility(View.VISIBLE); 
       TranslateAnimation tr2 = new TranslateAnimation(0, 0, 
         -1100, 0); 
       tr2.setDuration(1000); 
       tr2.setFillAfter(true); 
       tr2.setInterpolator(MainActivity.this, 
         android.R.anim.linear_interpolator); 
       layout_signup.startAnimation(tr2); 

       tr2.setAnimationListener(new AnimationListener() { 

        public void onAnimationStart(Animation animation) { 

        } 

        public void onAnimationRepeat(Animation animation) { 

        } 

        public void onAnimationEnd(Animation animation) { 
         home_activity_btn_login.setEnabled(true); 
        } 
       }); 
      } 
     }); 
+0

1 düzeni genişletmek ve diğer düzeni daraltmak anlamına gelir? – TheFlash

+0

@ pratik: evet .. – Biginner

+0

Bunu, genişletme ve daraltma yardımı yardımıyla yapmak ister misiniz? – TheFlash

cevap

12

Bu eski animatör programları (bazen çalışmıyor sonra dolgu içeren, oldukça iyi bilinen hata inanmak) ile bir hata olduğunu düşünüyorum. Eğer Y yönünde hareket etmek istiyorsanız, ÇeviriY kullanabilirsiniz

ObjectAnimator oa = ObjectAnimator.ofFloat(view, "translationX", 0, 100f); 
oa.setDuration(1000); 
oa.start(); 

, ObjectAnimator yerine İşte

bir örnektir kullanmayı deneyin. Her iki yönde de hareket etmek istiyorsanız, bir çeviriX ve çeviriY'ye ihtiyacınız var ve aynı anda oynatmak için bir AnimatorSet kullanın.

Bu comment to this question. göz atın Eski Animasyon API'sini kullanarak, fillAfter'ı (true) açıkça görünecek şekilde düğmelerin tıklatma konumu aynı kalır. Bu, sorununuzu onaylıyor. Yani yeni API'yi kullan ve iyi durumda olmalısın.

+0

Bence bu, X Co-Ordinate'deki düzenimi değiştirmeme yardımcı olacak, ancak düzenimi Y Koordinatına taşımak istiyorsam ne yapmam gerekiyor? Bunun için bana yardım etmeyeceğimi düşünüyorum. ben haklı mıyım – Biginner

+0

ObjectAnimator oa = ObjectAnimator.ofFloat (view, "translationY", 0, 5f); – Jameo

+0

yapardı Soruna benim düzenleme göz atın. Aynı sorunu olan başka bir soru buldum. Çözümüm çözmeli, FYI – Jameo