Android绘制旋转动画方法是什么
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这期内容当中小编将会给大家带来有关Android绘制旋转动画方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、准备工作首先需要有一个用于旋转的图片需要考虑
千家信息网最后更新 2026年11月02日Android绘制旋转动画方法是什么
这期内容当中小编将会给大家带来有关Android绘制旋转动画方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
1、准备工作
首先需要有一个用于旋转的图片
需要考虑如何开始、结束、加速、减速
2、加速减速原理
本次的动画采用RotateAnimation,初始化需要的参数如下
public RotateAnimation(float fromDegrees,float toDegrees,int pivotXType,float pivotXValue,int pivotYType, float pivotYValue) { mFromDegrees = fromDegrees;//开始角度 mToDegrees = toDegrees;//结束角度 mPivotXValue = pivotXValue;//确定x轴坐标的类型 mPivotXType = pivotXType;//x轴的值,0.5f表明是以自身这个控件的一半长度为x轴 mPivotYValue = pivotYValue;//确定y轴坐标的类型 mPivotYType = pivotYType;//y轴的值,0.5f表明是以自身这个控件的一半长度为y轴 initializePivotPoint();}所谓旋转动画,在本质上就是在如上的对象初始化之后,规定在一定的周期内旋转
所谓加速,本质上就是在设定好的周期内变换旋转角度
或者修改周期,在预设周期内旋转一定角度
总之,角度和周期一定会变化一个,就可以决定动画的快慢。
如: 从 2秒内旋转360度 到 1秒内旋转360度 就是一种加速,
从 2秒内旋转360度 到 2秒内旋转720度 也是一种加速。
反之就是减速。
3、初始化
RotateAnimation rotate = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotate.setInterpolator(new LinearInterpolator()); rotate.setDuration(2000);//设置动画持续周期 rotate.setRepeatCount(-1);//设置重复次数// rotate.setFillAfter(true);//动画执行完后是否停留在执行完的状态 rotate.setStartOffset(10);//执行前的等待时间
4、开始
start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { fan.startAnimation(rotate); } });5、加速
首先需要创建全局变量
private int duration=2000;
加速样例
accelerate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (duration>10){ duration/=2; //周期除2角度不变加速(需要考虑极端,所以加一个判断) } rotate.setDuration(duration); //设置周期 fan.startAnimation(rotate); //开始旋转 } });6、减速
decelerate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (duration<10000){ duration*=2; //周期乘2角度不变减速(需要考虑极端,所以加一个判断) } rotate.setDuration(duration); //设置周期 fan.startAnimation(rotate); //开始旋转 }});7、停止
stop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { fan.clearAnimation(); //停止 }});8、项目源码
Layout部分
MainActivity部分
package com.suk.rotate;import androidx.appcompat.app.AppCompatActivity;import android.app.AlertDialog;import android.graphics.drawable.Drawable;import android.graphics.drawable.RotateDrawable;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.view.animation.LinearInterpolator;import android.view.animation.RotateAnimation;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.Toast;import com.suk.rotate.R;public class MainActivity extends AppCompatActivity { private ImageView fan; private Button start; private Button stop; private Button accelerate; private RotateAnimation rotate; private Button decelerate; private int duration=2000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fan = findViewById(R.id.fan); start = findViewById(R.id.start); stop = findViewById(R.id.stop); accelerate = findViewById(R.id.accelerate); decelerate = findViewById(R.id.decelerate); } @Override protected void onStart() { super.onStart(); rotate = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotate.setInterpolator(new LinearInterpolator());// rotate.setInterpolator(lin); rotate.setDuration(2000);//设置动画持续周期 rotate.setRepeatCount(-1);//设置重复次数// rotate.setFillAfter(true);//动画执行完后是否停留在执行完的状态 rotate.setStartOffset(10);//执行前的等待时间 start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { fan.startAnimation(rotate); } }); accelerate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (duration>10){ duration/=2;} rotate.setDuration(duration); fan.startAnimation(rotate); } }); decelerate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (duration<10000){ duration*=2;} rotate.setDuration(duration); fan.startAnimation(rotate); } }); /* fan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this); dialog.setTitle("点我没用"); dialog.setIcon(R.drawable.fan); dialog.setPositiveButton("OK",null); dialog.setMessage("这是普通对话框"); View view=View.inflate(MainActivity.this,R.layout. activity_main1, null); dialog.setView(view); dialog.create(); dialog.show(); } }); */ stop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { fan.clearAnimation(); } }); }}上述就是小编为大家分享的Android绘制旋转动画方法是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
周期
动画
角度
就是
方法
内容
坐标
控件
时间
本质
极端
次数
状态
类型
部分
长度
分析
普通
专业
中小
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
互联网科技公司
山东特亿宝互联网科技有限公司
科技股互联网
鸠鸠互联网科技
深圳互联网络科技有限公司
互联网科技logo设计
科技互联网创业计划书
左右互联网络科技
中国互联网金融科技基金
天速互联网络科技有限公司
中化能源互联网科技招聘
互联网还是高科技吗
昊天互联网科技有限公司
长沙互联网科技
沐思想互联网科技有限公司
互联网科技包装股份有限公司上市
杭州融税互联网科技有限公司
陕西彩京云互联网科技有限公司
广东猫王互联网科技有限公司电话
互联网科技的发展
壹账通互联网科技
腾讯科技 互联网女皇
欧洲十大科技互联网公司
速维有品互联网信息科技(苏州)有限公司
华夏恒生互联网科技013171
深圳互联网科技的发展
启辰互联网科技
互联网高科技绘画
株洲百竞科技的互联网营销顾问