Soru 1 imageview android üzerinde birden fazla animasyon


Zaten çalışmakta olan 2 animasyonum var. Trenimi karartmak ya da treni ara vermek istiyorum. Bu satırlardan 1'i çalıştırırsam çalışır. Ama her ikisini de yapmaya çalışırsam, sadece 1 çalışır. Burada gerçekten bir çözüm bulamıyorum.

Belki yardım edebilirsin?

  final ImageView mytrain = (ImageView) findViewById(R.id.train);
  final Animation traintween = AnimationUtils.loadAnimation(this,R.anim.treinanimation);
   final Animation trainfade = AnimationUtils.loadAnimation(this,R.anim.trainfade);


  mytrain.startAnimation(trainfade);
 mytrain.startAnimation(trainntween);

Her iki animasyonu da yapmak istiyorum.

Yardım için teşekkürler!


21
2018-03-21 12:32


Menşei




Cevaplar:


Kullan AnimationSet sınıf:

AnimationSet s = new AnimationSet(false);//false means don't share interpolators
s.addAnimation(traintween);
s.addAnimation(trainfad);
mytrain.startAnimation(s);

57
2018-03-21 12:35



teşekkür ederim dostum!! - RobinHo
rica ederim! :) - Korniltsev Anatoly
Yok addAnimation() yöntem AnimationSet - Konstantin Konopko
@konopko Evet onların. API düzey 1'den beri. developer.android.com/reference/android/view/animation/... - Chad Bingham
View.startAnimation (AnimationSet) mümkün değil. Bu neden kabul edilen bir cevap? - Hemanth


Kullanmalısın AnimationSet, kontrol et docs. Sadece ara addAnimation() oynamak istediğiniz her Animasyon için.


3
2018-03-21 12:33



addAnimation (trainfade); addAnimation (traintween); public void addAnimation (Animasyon a) {mytrain.startanimation (a); } Böyle mi? - RobinHo


Android'in AnimatorSet sınıfını kullanarak programlı olarak yapılabilir:

final AnimatorSet mAnimatorSet = new AnimatorSet();
    mAnimatorSet.playTogether(
                ObjectAnimator.ofFloat(img_view,"scaleX",1,0.9f,0.9f,1.1f,1.1f,1),
                ObjectAnimator.ofFloat(img_view,"scaleY",1,0.9f,0.9f,1.1f,1.1f,1),
                ObjectAnimator.ofFloat(img_view,"rotation",0 ,-3 , -3, 3, -3, 3, -3,3,-3,3,-3,0)
        );

//define any animation you want,like above

mAnimatorSet.setDuration(2000); //set duration for animations
    mAnimatorSet.start();

Bu örnek, aynı anda tüm 3 animasyonu hedef görünümde (imgView) başlatacaktır, ayrıca playSequentially'yi de kullanabilirsiniz .....

Tam örnek için Bunu kontrol et ..


3
2018-04-16 07:52





İşte tek bir xml dosyasındaki tüm animasyon örnekleri ...

Bu size yardımcı olacak ancak önce AnimationSet'in dokümanlarını okumalısınız

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

<scale android:fromXScale="1.0" android:toXScale="3.0"
    android:fromYScale="1.0" android:toYScale="3.0" android:pivotX="50%"
    android:pivotY="50%"  android:duration="5000" />
<set>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromAlpha="0.2" android:toAlpha="1.0"     android:duration="3000" />
    <rotate android:fromDegrees="0" android:toDegrees="-360"
        android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%"
        android:startOffset="700" android:duration="4000" />
<!--        <translate android:fromXDelta="0%" android:toXDelta="0%" -->
<!--            android:fromYDelta="0%" android:toYDelta="100%"     android:duration="3000" -->
</set>

</set>

1
2018-03-21 12:37



ad alanlarınızdaki eşzamanlı animasyonları işlemek için bir enterpolator kullanmayı düşünmek önemlidir - DarkCygnus


Ayrıca ImageSwitcher'ı da kullanabilirsiniz, bence bu sizin durumunuzda daha sonra AnimationSet


0
2018-03-21 15:30