这周忙的依旧,真希望自己可以变成三头六臂,同时工作,呵呵!
所以我就周内的一些知识总结一下,备忘!
1.TranslateAnimation是移动的动画效果。它有三个构造函数,我使用的是下面介绍的这一构造函数:
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)点.
通过setDuration()方法可以设置动画的时长;
setInterpolator()方法可以设置动画的插入器,有以下三个可以选择:
- accelerate_decelerate_interpolator 加速-减速 动画插入器
- accelerate_interpolator 加速-动画插入器
- decelerate_interpolator 减速- 动画插入器
如果动画结束后有其他操作,则对该动画进行监听,并在onAnimationEnd(Animation arg0)这一内部方法里加上自己的处理。
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
Log.d(TAG, "onAnimationStart");
}
@Override
public void onAnimationRepeat(Animation arg0) {
Log.d(TAG, "onAnimationRepeat");
}
@Override
public void onAnimationEnd(Animation arg0) {
Log.d(TAG, "onAnimationEnd");
//add function
}
});
注:在对于某个组件启动这一动画时,使用 view.startAnimation(animation);
因为我在使用view.setAnimation(animation);animation.start();后出现了一些诡异的现象无法解释,而使用上面那个方法就不会有问题,所以建议使用startAnimation方法
2.PopupWindow:
showAsDropDown(anchor, xoff, yoff);
说明:
anchor:相对于哪一个组件
xoff:相对于该组件的x轴距离
yoff:相对于该组件下边框的y轴距离
setAnimationStyle(int):
如果要设置popWindow显示或退出时的动画,则需要在style中进行设置,参考代码如下:
<style name="animationPopWindow"> <item name="android:windowEnterAnimation">@anim/popwindow_in_anim</item> </style>
其中:popwindow_in_anim是自定义的动画
这样popWindow则会以我们设定的方式显示或退出。