7

アルファを実行してRelativeLayoutで変換しようとしています。私は両方を定義します:

AlphaAnimation alpha;
alpha = new AlphaAnimation(0.0f, 1.0f);
alpha.setDuration(1500);
alpha.setFillAfter(true);

TranslateAnimation translate;
translate = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,                                                                       
                 Animation.RELATIVE_TO_SELF, 0,
                 Animation.RELATIVE_TO_SELF, 1, 
                 Animation.RELATIVE_TO_SELF, 0);
translate.setDuration(1000);

だから私はRelativeLayoutでアニメーションを開始します

RelativeLayout.startAnimation(translate);
RelativeLayout.startAnimation(alpha);

問題は、この場合、アルファアニメーションのみが開始され、翻訳は開始されないことです。誰かが私を助けることができますか?問題は、同じオブジェクトで2つの異なるアニメーションを同時に開始するにはどうすればよいかということです(私の場合は相対レイアウト)。


質問を解決します。私はそれを追加しました:

AnimationSet animationSet = new AnimationSet(true);
animationSet.addAnimation(alpha);
animationSet.addAnimation(translate);

RelativeLayout.startAnimation(animationSet);
4

2 に答える 2

7

2つのアニメーションを同時に実行したい場合は、アニメーションセットを使用できます。

http://developer.android.com/reference/android/view/animation/AnimationSet.html

たとえば、

as = new AnimationSet(true);
as.setFillEnabled(true);
as.setInterpolator(new BounceInterpolator());

TranslateAnimation ta = new TranslateAnimation(-300, 100, 0, 0); 
ta.setDuration(2000);
as.addAnimation(ta);

TranslateAnimation ta2 = new TranslateAnimation(100, 0, 0, 0); 
ta2.setDuration(2000);
ta2.setStartOffset(2000); // allowing 2000 milliseconds for ta to finish
as.addAnimation(ta2);
于 2014-07-22T13:34:21.557 に答える
6

最初のアニメーションが開始されるとすぐに、2番目のアニメーションが終了して自動的に開始するため、現在のコードは機能しません。したがって、完了するまで待つ必要があります。

これを試して :

translate.setAnimationListener(new AnimationListener() {

    public void onAnimationStart(Animation animation) {
        // TODO Auto-generated method stub

    }

    public void onAnimationRepeat(Animation animation) {
        // TODO Auto-generated method stub

    }

    public void onAnimationEnd(Animation animation) {
        // TODO Auto-generated method stub
        RelativeLayout.startAnimation(alpha);
    }
});

それらを同時に実行したい場合は、res /anim/フォルダーにanimation.xmlファイルを作成することをお勧めします。

例:

<?xml version="1.0" encoding="utf-8"?>
<set
 xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:fromXScale="1.0"
android:fromYScale="1.0"
 android:toXScale=".75"
 android:toYScale=".75"
 android:duration="1500"/>
<rotate
android:fromDegrees="0"
 android:toDegrees="360"
 android:duration="1500"
 android:pivotX="50%"
 android:pivotY="50%" />
<scale
android:fromXScale=".75"
 android:fromYScale=".75"
 android:toXScale="1"
 android:toYScale="1"
 android:duration="1500"/>
</set>

Javaコード:

 Animation multiAnim = AnimationUtils.loadAnimation(this, R.anim.animation);
    RelativeLayout.startAnimation(multiAnim);
于 2013-01-19T17:15:21.187 に答える