动画 -- View动画 -- 平移动画

View动画的作用对象是View,它支持4种动画效果,分别是平移动画(子类:TranslateAnimation,标签:)、缩放动画(子类:ScaleAnimation,标签:)、旋转动画(子类:RotateAnimation,标签:)和透明度动画(子类:AlphaAnimation,标签:)。
本小节学习平移动画。

一、概念

平移动画,子类:TranslateAnimation,标签:
它可以使一个View在水平和竖直方向完成平移的动画效果。

二、实现

1. XML实现
标签常用属性如下:
android:fromXDelta:x方向上相对于父容器的起始值,比如0;
android:toXDelta:x方向上相对于父容器的结束值,比如100;
android:fromYDelta:y方向上相对于父容器的起始值;
android:toYDelta:y方向上相对于父容器的结束值。

//res/anim/translate_animation.xml



//布局


    


//代码,MainActivity
private void translateAnimationXML() {
    Animation translateAnimation = AnimationUtils.loadAnimation(this, R.anim.translate_animation);
    mAnimate_tv.setAnimation(translateAnimation);
    mAnimate_tv.startAnimation(translateAnimation);
}

private void stopAnimation() {
    mAnimate_tv.clearAnimation();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    translateAnimationXML();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    stopAnimation();
}

2. 代码实现
构造方法:
public TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
参数说明:
fromXDelta:x方向上相对于父容器的起始值,比如0;
toXDelta:x方向上相对于父容器的结束值,比如100;
fromYDelta:y方向上相对于父容器的起始值;
toYDelta:y方向上相对于父容器的结束值。

//布局


    


//代码,MainActivity
private void translateAnimationCode() {
    mTranslateAnimation = new TranslateAnimation(0, 300, 0, 300);
    mTranslateAnimation.setDuration(3000);
    mTranslateAnimation.setRepeatCount(2);
    mTranslateAnimation.setFillAfter(true);
    mAnimate_tv.setAnimation(mTranslateAnimation);
    mAnimate_tv.startAnimation(mTranslateAnimation);
}

private void stopAnimation() {
    mAnimate_tv.clearAnimation();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    translateAnimationCode();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    stopAnimation();
}

三、动画过程监听

通过Animation的setAnimationListener方法可以给View动画添加过程监听。
接口如下:

public static interface AnimationListener {
    void onAnimationStart(Animation animation);
    void onAnimationEnd(Animation animation);
    void onAnimationRepeat(Animation animation);
}

代码如下:

private void translateAnimationXML() {
    Animation translateAnimation = AnimationUtils.loadAnimation(this, R.anim.translate_animation);
    translateAnimation.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
            Log.d("MainActivity", "zwm, onAnimationStart");
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            Log.d("MainActivity", "zwm, onAnimationEnd");
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            Log.d("MainActivity", "zwm, onAnimationRepeat");
        }
    });

    mAnimate_tv.setAnimation(translateAnimation);
    mAnimate_tv.startAnimation(translateAnimation);
}

你可能感兴趣的:(动画 -- View动画 -- 平移动画)