Android动画-RotateAnimation
来源:互联网 发布:macpro软件卸不掉 编辑:程序博客网 时间:2024/05/17 03:10
一、构造器说明
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度 。
二、常用属性说明
1、android:interpolator:这个属性是用来设置转动速率的。
LinearInterpolator为匀速效果,Accelerateinterpolator为加速效果、DecelerateInterpolator为减速效果
2、android:repeatCount 重复的次数,默认为0,必须是int,可以为-1表示不停止
3、android:duration属性表示从android:fromDegrees转动到android:toDegrees所花费的时间,单位为毫秒。可以用来计算速度。
4、android:startOffset 在调用start函数之后等待开始运行的时间,单位为毫秒,若为10,表示10ms后开始运行
5、android:repeatMode 重复的模式,默认为restart,即重头开始重新运行,可以为reverse即从结束开始向前重新运行。
在android:repeatCount大于0或为infinite时生效
6、android:detachWallpaper 表示是否在壁纸上运行
7、android:zAdjustment 表示被animated的内容在运行时在z轴上的位置,默认为normal。normal保持内容当前的z轴顺序top运行时在最顶层显示bottom运行时在最底层显示
8、rotateAnimation.setFillAfter(true);
ture表示动画结束后停留在动画的最后位置,false表示动画结束后回到初始位置,默认为false。
使用示例—代码中设置动画
Java代码
public class ParameterSettingActivity extends AppCompatActivity { private RotateAnimation rotateAnimation; private ImageView ivParamsetOneManual; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_parameter_setting); initAnim(); initView(); } private void initAnim() { rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotateAnimation.setInterpolator(new LinearInterpolator());//如果不添加这句,那么动画每个周期结束时会停顿一下 rotateAnimation.setDuration(1000); rotateAnimation.setFillAfter(true); rotateAnimation.setRepeatCount(Animation.INFINITE); rotateAnimation.setRepeatMode(Animation.RESTART); } private void initView() { ivParamsetOneManual = (ImageView)findViewById(R.id.iv_paramset_one_manual); ivParamsetOneManual.setAnimation(rotateAnimation); rotateAnimation.start(); //animation.cancel(); //结束动画 }}
xml代码
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/background_dark" tools:context="com.sdkj.heaterbluetooth.activity.ParameterSettingActivity"> <android.support.percent.PercentRelativeLayout android:layout_below="@+id/header" android:id="@+id/rl_paramset_one_manual" android:layout_width="wrap_content" android:layout_height="72dp" android:orientation="horizontal"> <ImageView android:id="@+id/iv_paramset_one_manual" style="@style/style_paramset_imageview2_background"/> <ImageView style="@style/style_paramset_imageview_background" android:text="一档"/> </android.support.percent.PercentRelativeLayout></RelativeLayout>
style.xml
<resources> <style name="style_paramset_imageview_background"> <item name="android:layout_width">0dp</item> <item name="android:layout_height">0dp</item> <item name="layout_heightPercent">100%</item> <item name="layout_aspectRatio">100%</item> <item name="android:textColor">@color/white</item> <item name="android:textSize">10sp</item> <item name="android:background">@mipmap/bg_paramset_manual_text</item> </style> <style name="style_paramset_imageview2_background"> <item name="android:layout_width">0dp</item> <item name="android:layout_height">0dp</item> <item name="layout_heightPercent">100%</item> <item name="layout_aspectRatio">100%</item> <item name="android:background">@mipmap/bg_paramset</item> </style></resources>
使用示例—xml中设置动画
java代码
public class ParameterSettingActivity extends AppCompatActivity { private RotateAnimation rotateAnimation; private ImageView ivParamsetOneManual; Animation rotate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_parameter_setting); initTitleBar(); initAnim(); initView(); } private void initAnim() { rotate = AnimationUtils.loadAnimation(this, R.anim.anim_paramset_manual_rotate); LinearInterpolator lin = new LinearInterpolator(); rotate.setInterpolator(lin); } private void initView() { ivParamsetOneManual = (ImageView)findViewById(R.id.iv_paramset_one_manual); ivParamsetOneManual.setAnimation(rotate); ivParamsetOneManual.startAnimation(rotate); //ivParamsetOneManual.clearAnimation();动画停止 }}
xml和style.xml文件不变
anim_paramset_manual_rotate.xml
<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" > <rotate android:fromDegrees="0" android:interpolator="@android:anim/linear_interpolator" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" android:duration = "1000" android:repeatCount = "-1"> </rotate></rotate>
- Android动画之RotateAnimation
- Android动画-RotateAnimation
- Android Tween动画之RotateAnimation
- Android RotateAnimation动画参数理解
- Android 常用动画之RotateAnimation
- Android 中的动画 RotateAnimation类
- Android动画之RotateAnimation使用
- RotateAnimation动画
- Android利用RotateAnimation实现旋转变化动画
- Android 动画 Tweened Animation 之 RotateAnimation
- Android 动画之RotateAnimation应用详解
- Android 动画之RotateAnimation应用详解
- Android 动画之RotateAnimation应用详解
- Android RotateAnimation动画不能旋转的问题
- Android 动画之RotateAnimation应用详解
- Android 动画之RotateAnimation应用详解
- Android动画之RotateAnimation的基本用法
- android RotateAnimation设置中心点旋转动画
- mbedtls安装与入门(mbedtls安装与入门)
- Java面试题大汇总
- php各个版本的区别
- 使用ajax简单的仿照售房网站上根据城市,区域和街道选择房屋信息
- PHP中使用CURL
- Android动画-RotateAnimation
- python中单,双引号和三个双引号的区别
- 项目中点击imageview显示popupWindow,删除,退出等
- 已经 安装了 php php -v 报错
- 网易2018校招内推编程题_疯狂队列
- 深入浅出mysql事务处理和锁机制
- 从零开发一个完整的Android项目(三)——常量的定义
- 最大熵学习笔记(一)预备知识
- Jackson