欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android view动画之平移动画

程序员文章站 2022-06-15 14:54:54
...

方法一

用 AnimationUtils 和 xml 的方式,加载指定的平移动画。
setAnimationListener 是监听动画的过程。

Animation translateAnimation = AnimationUtils.loadAnimation(mContext, R.anim.translate_animation);
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {

            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
mImageView.startAnimation(translateAnimation);

translate_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <!--
    android:fromXDelta
    Float or percentage. 移动起始点的x坐标. 表示形式有三种:
    1 相对于自己的左边界的距离,单位像素值。(例如 "5")
    2 相对于自己的左边界的距离与自身宽度的百分比。(例如  "5%")
    3 相对于父View的左边界的距离与父View宽度的百分比。(例如 "5%p")
    android:toXDelta
    Float or percentage. 移动结束点的x坐标. 表现形式同上
    android:fromYDelta
    Float or percentage. 移动起始点的y坐标. 表示形式有三种:
    1 相对于自己的上边界的距离,单位像素值。(例如 "5")
    2 相对于自己的上边界的距离与自身高度的百分比。(例如  "5%")
    3 相对于父View的上边界的距离与父View高度的百分比。(例如 "5%p")
    android:toYDelta
    Float or percentage. 移动结束点的y坐标. 表现形式同上
    -->

    <translate
        android:duration="2000"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="100%"
        android:toYDelta="0" />
</set>

效果,y轴不变,x轴向右平移,平移距离是这个图片的宽度。

方法二

直接使用 TranslateAnimation 设置,

TranslateAnimation translateAnimation1 = new TranslateAnimation(0,100, 0, 0);
translateAnimation1.setFillAfter(true);
mImageView.startAnimation(translateAnimation1);

效果,y轴不变,x轴向右平移 100 。

方法三

属性动画实现,

//利用AnimatorSet和ObjectAnimator实现平移动画
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(
                    ObjectAnimator.ofFloat(mImageView, "translationX", 20, 100).setDuration(2000),
                    ObjectAnimator.ofFloat(mImageView, "translationY", 20, 100).setDuration(2000));
animatorSet.start();