注意:相对自身旋转时,xy坐标; 坐标系,Android 本身共有两大坐标系,一个是屏幕坐标系,另一个是View坐标系。 特点:y轴方向是向下的,x轴方向还是向右的。 注意坐标原点。
RotateAnimation ra = new RotateAnimation(0, -180,
RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 1); //相对于自己。
ra.setDuration(1000);
ra.setFillAfter(true); //填充变化后的动画。
rl.startAnimation(ra);
以相反的方向显示动画。
RotateAnimation ra = new RotateAnimation(-180, 0,
RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 1); //相对于自己。
ra.setDuration(1000);
rl.startAnimation(ra);
动画,有一个延迟方法,当用到需要延时操作一些动画的时候很实用。
**ra.setStartOffset(startOffset);**
旋转动画在做的时候出现的bug:
1、系统源生的旋转动画位置改变后,view的位置并没有被改变。这个特性很好。
如果出现点击时间的冲突时,可以禁用在某种情况下的点击事件。
ra.setAnimationListener(new MyListener()); //设置动画监听;
static class MyListener implements AnimationListener{
@Override //Aniamtion开始的时候执行
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
animaCount++;
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
animaCount--;
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
//连续按键直接接着走原来动画的bug 修复: 数量不为零说明还有动画执行。
case R.id.iv_home:
if(AnimaUtils.animaCount!=0){
//说明有动画在执行;
return;
}
自定义控件:
1.组合控件:将系统原生控件组合起来,加上动画效果,形成一种特殊的UI效果
2.纯粹自定义控件:继承自系统的View,自己去实现view效果