有缩放动画AFTER从最后位置翻译动画

时间:2015-03-08 03:00:43

标签: android android-animation

我想将一个平移动画应用到从右下角到中心的视图,然后从完成平移的位置开始缩放动画。完成后,我希望视图恢复到原始大小和位置。知道怎么做吗?这是我用于动画的代码

TranslateAnimation translateAnim = new TranslateAnimation(0, midScreenX, 0, midScreenY);
        translateAnim.setDuration(2000);

        ScaleAnimation scaleAnim = new ScaleAnimation(1, 4, 1, 4, Animation.RELATIVE_TO_SELF,1f, Animation.RELATIVE_TO_SELF,1f);
        scaleAnim.setDuration(2000);

1 个答案:

答案 0 :(得分:0)

使用AnimationListener链接动画并使用setFillAfter(true)

    TranslateAnimation translateAnim = new TranslateAnimation(0, midScreenX, 0, midScreenY);
    translateAnim.setDuration(2000);
    // user setFillAfter to make sure that we scale from the last position it was animated to.
    translateAnim.setFillAfter(true);

    // make scaleAnim final so we can use it in the AnimationListener.onAnimationEnd method
    final ScaleAnimation scaleAnim = new ScaleAnimation(1, 4, 1, 4, Animation.RELATIVE_TO_SELF,1f, Animation.RELATIVE_TO_SELF,1f);
    scaleAnim.setDuration(2000);
    scaleAnim.setFillAfter(true);
    translateAnim.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // now that the first animation is done, start the second
            someViewObj.startAnimation(scaleAnim);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });
    // start first animation
    someViewObj.startAnimation(translateAnim);

Android文档:http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html http://developer.android.com/reference/android/view/animation/Animation.html#setFillAfter(boolean)