Android view动画之平移动画

方法一

用 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();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值