详细理解TranslateAnimation

本文详细介绍了Android中的TranslateAnimation,包括其三种构造方法及应用场景,并通过实例代码展示了如何实现视图的移动动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android JDK为我们提供了4种动画效果,分别是: AlphaAnimation,RotateAnimation, ScaleAnimation, TranslateAnimation

今天我想讲解的是TranslateAnimation这个动画效果。也是本人在做一个移动图片的动画效果的项目时,遇到了一些问题

在网上查了很多资料,搞了好几天。终于明白怎么使用这个TranslateAnimation,在本文中记录下来,以便以后忘记了可以查阅


TranslateAnimation是移动的动画效果、它有三个构造函数

public TranslateAnimation(Context context,AttributeSet attrs)

这个方法比较简单、这里就不做过多讲解了


public TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

这个是我们最常用的一个构造方法

float fromXDelta:这个参数表示动画开始的点离当前View X坐标上的差值;

float toXDelta, 这个参数表示动画结束的点离当前View X坐标上的差值;

float fromYDelta, 这个参数表示动画开始的点离当前View Y坐标上的差值;

float toYDelta)这个参数表示动画开始的点离当前View Y坐标上的差值;

如果view在A(x,y)点 那么动画就是从B点(x+fromXDelta, y+fromYDelta)点移动到C 点(x+toXDelta,y+toYDelta)点.


public TranslateAnimation (int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)

fromXType:第一个参数是x轴方向的值的参照(Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF,or Animation.RELATIVE_TO_PARENT);

fromXValue:第二个参数是第一个参数类型的起始值;

toXType,toXValue:第三个参数与第四个参数是x轴方向的终点参照与对应值;

后面四个参数就不用解释了、如果全部选择Animation.ABSOLUTE,其实就是第二个构造函数


以x轴为例介绍参照与对应值的关系:

如果选择参照为Animation.ABSOLUTE,那么对应的值应该是具体的坐标值,比如100到300,指绝对的屏幕像素单位

如果选择参照为Animation.RELATIVE_TO_SELF或者 Animation.RELATIVE_TO_PARENT指的是相对于自身或父控件

对应值应该理解为相对于自身或者父控件的几倍或百分之多少

项目代码 

RelativeLayout guidLast = new RelativeLayout(context);
ImageView ivLast = new ImageView(context);
// ivLast.setImageResource(R.drawable.guid_6);
ivLast.setBackgroundResource(imgIds[imgIds.length - 1]);
ivLast.setScaleType(ScaleType.CENTER);
guidLast.addView(ivLast, new RelativeLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
ImageButton skip = new ImageButton(context);
RelativeLayout.LayoutParams skipParams = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
skipParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
skipParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
skipParams.setMargins(0, 0, 0,
getResources().getDimensionPixelSize(R.dimen.dd_dimen_300px));
skip.setLayoutParams(skipParams);
skip.setBackgroundResource(R.drawable.guid_button_selector);
guidLast.addView(skip);
if (DataUtils.getPreferences(DataUtils.KEY_FIRST_START, true)) {
TranslateAnimation ta = animationOperate();
skip.startAnimation(ta);
}

private TranslateAnimation animationOperate() {
TranslateAnimation ta = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
0.0f, Animation.RELATIVE_TO_SELF, 3.0f,
Animation.RELATIVE_TO_SELF, 0.0f);
ta.setDuration(1000);
return ta;
}

转载 http://dwtedx.com/itshare_199.html点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值