RotateAnimation旋转坐标系为以旋转点为坐标系(0,0)点。x轴为0度,顺时针方向旋转一定的角度。
1.RotateAnimation(fromDegrees, toDegrees) [默认以View左上角顶点为旋转点]。
X轴顺时针转动到fromDegrees为旋转的起始点,
X轴顺时针转动到toDegrees为旋转的起始点。
如fromDegrees=0,toDegrees=90;为左上角顶点为旋转点。0度为起始点,90度为终点。进行旋转,旋转了90度
如fromDegrees=60,toDegrees=90;为左上角顶点为旋转点。60度为起始点,90度为终点。进行旋转,旋转了90-60=30度

2.RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY)
(pivotX,pivotY)为旋转点。pivotX为距离左侧的偏移量,pivotY为距离顶部的偏移量。即为相对于View左上角(0,0)的坐标点。
假设:

View width=100px,height=100px
RotateAnimation(0,10,100,100);则以右下角顶点为旋转点,从原始位置顺时针旋转10度
RotateAnimation(0,90,50,50);则以View的中心点为旋转点,旋转90度

3.RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue)
pivotXType, pivotXValue, pivotYType, pivotYValue  旋转点类型及其值。
Animation.ABSOLUTE为绝对值 其他为百分比。这个和平移动画的一样,不了解可以去那看
假设

RotateAnimation(0, 90, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 按中心点旋转90度

效果和2中的RotateAnimation(0,90,50,50);则以View的中心点为旋转点,旋转90度 。效果一样

new RotateAnimation(0, 180, centerX,centerY);

第一个参数表示动画的起始角度,第二个参数表示动画的结束角度,第三个表示动画的旋转中心x轴,第四个表示动画旋转中心y轴。

rotateAnimation.setDuration(1000 * 20);

表动画持续20s。

rotateAnimation.setFillAfter(true);

ture表示动画结束后停留在动画的最后位置,false表示动画结束后回到初始位置,默认为false。

mView.startAnimation(rotateAnimation);

表示在mView中启动动画。

列子:随便找张图片  两个按钮就行.

RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
参数说明:
float fromDegrees:旋转的开始角度。
float toDegrees:旋转的结束角度。
int pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。
float pivotXValue:X坐标的伸缩值。
int pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。
float pivotYValue:Y坐标的伸缩值。

public class MainActivity extends Activity {
ImageView image;
Button start;
Button cancel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.main_img);
start = (Button) findViewById(R.id.main_start);
cancel = (Button) findViewById(R.id.main_cancel);
/** 设置旋转动画 */
final RotateAnimation animation =new RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF,
0.5f,Animation.RELATIVE_TO_SELF,0.5f);
animation.setDuration(3000);//设置动画持续时间
/** 常用方法 */
//animation.setRepeatCount(int repeatCount);//设置重复次数
//animation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态
//animation.setStartOffset(long startOffset);//执行前的等待时间
start.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
image.setAnimation(animation);
/** 开始动画 */
animation.startNow();
}
});
cancel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
/** 结束动画 */
animation.cancel();
}
});
}
}

最新文章

  1. 洛谷 P1330 封锁阳光大学 Label:染色问题
  2. 如何添加win10命令提示符字体,美化显示效果
  3. javascript实现KMP算法(没啥实用价值,只供学习)
  4. 使用awk和grep做简单的统计
  5. JAVA运行程序代码段
  6. 云梯vpn
  7. jenkins+ant+jmeter html报告文件作为附件发送(ant-jmeter支持javamail)
  8. Redis之Zset
  9. Python Selenium 之生成Beautiful可视化报告
  10. file_get_contents('php://input') 和POST的区别
  11. html5 的存储
  12. ubuntu go环境安装搭建
  13. Eclipse 新建 Maven web 项目
  14. Codeforces 1065E(计数)
  15. Flask恋爱的一瞬间
  16. Linux下批量Kill多个进程
  17. centos限制远程尝试密码次数
  18. MapRedece(多表关联)
  19. VMware vSphere 6.0 安装及管理手册
  20. jackson序列化字段字母大小写及字段名重复

热门文章

  1. KVC & KVO
  2. 在Asp.Net MVC中实现计算页面执行时间及简单流量统计
  3. Error:java:Compilation failed: internal java compiler error
  4. AVAudioSession初探
  5. Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析
  6. Web---文件上传-用apache的工具处理、打散目录、简单文件上传进度
  7. call()与apply()区别
  8. 算法练习之DP 求LCM (最长公共子序列)
  9. linux find命令强大之处
  10. [iOS]C语言技术视频-16-指针变量高级用法(堆栈内存)
  11. TCP/IP的那些事--子网掩码
  12. centos 下安装 Jre 及 selenium
  13. CommonsChunkPlugin相关
  14. 写一个Python 1、通过select实现的最简单的web框架2、通过wsgiref实现的web框架
  15. 关于javaweb项目红叉报错可但项目可以正常运行的解决办法
  16. Redis和memcached区别须知
  17. python之模块4
  18. Luogu P4727-- 【HNOI2009】图的同构记数
  19. 五中常见的PHP设计模式
  20. .NET设计模式 第二部分 创建型模式(2)—抽象工厂模式(Abstract Factory)