Android动画_TranslateAnimation

本篇只记录TranslateAnimation。

Translate动画是非常好理解,就是定义一个开始的位置和一个结束位置,定义移动时间,然后就能自动产生移动动画。

代码方式实现:

TranslateAnimation tAnim = new TranslateAnimation(0, 400, 0, 0); // 横向位移
tAnim.setDuration(2000);

view.startAnimation(tAnim);

xml实现方式:

1. 新建/res/anim文件夹,

2. 在anim下新建动画xml文件

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:fromXDelta="-100%p"
    android:toXDelta="0%"
    android:fromYDelta="0"
    android:toYDelta="0"
    android:duration="10000">
    
</translate>

该文件只能有一个根结点,可以是<set>,<alpha>,<scale>,<translate>,<rotate>,而其中,<set>结点可以包含子节点,即可以包含<set>,<alpha>,<scale>,<translate>,<rotate>,以此类推。

fromXDelta: "50" 表示使用绝对位置定位;  “50%” 表示使用相对控件本身定位; "100%p" 表示相对于控件的父控件定位,例如100%p是父控件的底部,0%p是父控件的顶部。有意思的是,如果使用了android:layout_centerInParent="true", android:layout_gravity="center"等,0%p和100%p的位置也会相应变动。

toXDelta等的取值也是一样。可以取负值。


Interpolator:决定动画进行过程的速度变化。比如:你将一个按钮从屏幕左侧运动到屏幕右侧。可以让它一直加速前进,或者先减速然后减速,这就是Interpolator发挥的作用。


andoird:fillAfter: View Animation的动画效果是绘制出来的,并非该组件真正移动了,通过设置fillAfter为true,则动画将保持结束的状态。


startOffset:该属性定义动画推迟多久开始,通过这个属性的设置,我们可以设计一些前后按序发生的动画,当然,除了最后一个发生的动画,其他动画得设置fillAfter为true.


我们一般使用AnimationUtils读取定义在xml文件中的动画:

Animation anim = AnimationUtils.loadAnimation(AnimaXmlActivity.this, R.anim.myanim);  

 view.startAnimation(anim);


android:interpolator: 加速器,非常有用的属性,可以简单理解为动画的速度,可以是越来越快,也可以是越来越慢,或者是先快后忙,或者是均匀的速度等等,对于值如下:


@android:anim/accelerate_interpolator: 越来越快


@android:anim/decelerate_interpolator:越来越慢


@android:anim/accelerate_decelerate_interpolator:先快后慢


@android:anim/anticipate_interpolator: 先后退一小步然后向前加速


@android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点


@android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点


@android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点


@android:anim/linear_interpolator:均匀速度。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值