我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android绘制旋转动画方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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部分

<?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="#DEECFA"    tools:context=".MainActivity">    <RelativeLayout        android:layout_centerHorizontal="true"        android:layout_marginTop="100dp"        android:id="@+id/relativeLayout"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@mipmap/border"        tools:layout_editor_absoluteX="566dp"        tools:layout_editor_absoluteY="132dp">        <ImageView            android:id="@+id/fan"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            app:class="lazy" data-srcCompat="@mipmap/fan"            tools:layout_editor_absoluteX="552dp"            tools:layout_editor_absoluteY="122dp" />    </RelativeLayout>    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:layout_marginBottom="150dp">        <Button            android:id="@+id/start"            android:layout_width="60dp"            android:layout_height="60dp"            android:background="@mipmap/border"            android:text="开始"            tools:layout_editor_absoluteX="525dp"            tools:layout_editor_absoluteY="596dp" />        <Button            android:id="@+id/accelerate"            android:layout_marginLeft="100dp"            android:layout_width="60dp"            android:layout_height="60dp"            android:background="@mipmap/border"            android:text="加速"            tools:layout_editor_absoluteX="650dp"            tools:layout_editor_absoluteY="596dp" />        <Button            android:layout_marginLeft="100dp"            android:id="@+id/decelerate"            android:layout_width="60dp"            android:layout_height="60dp"            android:background="@mipmap/border"            android:text="减速"            tools:layout_editor_absoluteX="795dp"            tools:layout_editor_absoluteY="596dp" />        <Button            android:id="@+id/stop"            android:layout_marginLeft="100dp"            android:layout_width="60dp"            android:layout_height="60dp"            android:background="@mipmap/border"            android:text="结束"            tools:layout_editor_absoluteX="950dp"            tools:layout_editor_absoluteY="596dp" />    </LinearLayout>    <ImageView        android:layout_centerVertical="true"        android:layout_marginLeft="90dp"        android:id="@+id/imageView"        android:layout_width="261dp"        android:layout_height="527dp"        app:class="lazy" data-srcCompat="@mipmap/title"        tools:layout_editor_absoluteX="141dp"        tools:layout_editor_absoluteY="132dp" /></RelativeLayout>

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);            }        });                stop.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                fan.clearAnimation();            }        });    }}

上述就是小编为大家分享的Android绘制旋转动画方法是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android绘制旋转动画方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android绘制旋转动画方法是什么

这期内容当中小编将会给大家带来有关Android绘制旋转动画方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、准备工作首先需要有一个用于旋转的图片需要考虑如何开始、结束、加速、减速2、加速减速原
2023-06-26

Android开机动画制作的方法是什么

Android开机动画通常是通过修改系统文件来实现的。具体方法如下:获取Root权限:首先需要获取Root权限,以便能够修改系统文件。可以通过Root手机或使用Root工具(如Magisk、SuperSU等)来获取Root权限。查找系统文件
2023-10-26

android加载动画的方法是什么

Android加载动画有多种方法,以下是几种常用的方法:1. 使用AnimationDrawable:通过将多个图片帧组合在一起形成动画效果。首先,在res/drawable文件夹下创建一个xml文件,定义帧动画,然后在代码中通过Anima
2023-08-08

bootstrap加载动画的方法是什么

要在Bootstrap中加载动画,您可以使用以下方法之一:1. 使用Bootstrap的CSS类:Bootstrap提供了一些内置的CSS类,可以用于创建加载动画。例如,您可以使用`.spinner-border`类创建一个旋转的加载图标,
2023-08-24

python柱状图绘制的方法是什么

在Python中,可以使用多个库来绘制柱状图,其中最常用的有matplotlib和seaborn。使用matplotlib库绘制柱状图的方法如下:1. 导入matplotlib库:```pythonimport matplotlib.pyp
2023-09-20

Python绘制点然后连线的方法是什么

Python绘制点然后连线的方法可以通过使用matplotlib库来实现。下面是一个基本的示例代码:```pythonimport matplotlib.pyplot as plt# 定义点的坐标x = [1, 2, 3, 4, 5]y =
2023-08-24

Android X86强制竖屏怎么办?安卓(Android)x86屏幕旋转成横屏解决方法

Android X86强制竖屏了怎么办? 安卓(Android)x86在运行应用时出现屏幕旋转变成横屏了?难不成要把脖子旋转90度来看屏幕吗?方法当然是有的,下面小编就来教大家两个解决安卓(Android)x86屏幕旋转问题的方法,实现所有
2022-06-07

view视图之Canvas+Paint图形绘制的方法是什么

这篇文章主要介绍“view视图之Canvas+Paint图形绘制的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“view视图之Canvas+Paint图形绘制的方法是什么”文章能帮助大家解
2023-07-05

android自动编译rom的方法是什么

编译Android ROM 的方法主要包括以下几个步骤:1. 安装必要的软件和工具:首先需要安装JDK(Java Development Kit)、Android SDK(Software Development Kit)和NDK(Nati
2023-08-23

Android自动化测试的方法是什么

本篇内容介绍了“Android自动化测试的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自动化测试自动化测试指软件测试的自动化,在
2023-06-05

android开机自启动的方法是什么

Android开机自启动的方法有以下几种:1. 使用BroadcastReceiver:创建一个继承自BroadcastReceiver的类,在类中重写onReceive方法,在onReceive方法中处理开机自启动的逻辑,并在Androi
2023-08-12

Android静默拍摄app制作方法是什么?

这篇文章将为大家详细讲解有关Android静默拍摄app制作方法是什么?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。所谓静默拍摄就是在用户毫无感知的情况下拍摄。一般的拍照都会有预览区域,拍照声。去掉这些
2023-05-31

android登录判断并跳转的方法是什么

在Android中,可以使用Intent和条件判断来实现登录判断并跳转的功能。首先,你需要创建一个判断登录状态的方法,例如:```javaprivate boolean isLoggedIn() {// 判断用户是否已登录,可以根据需要自定
2023-08-26

python随时间序列变动画图的方法是什么

这篇文章将为大家详细讲解有关python随时间序列变动画图的方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。画这种图要考虑两点:1.如何生成连续的时间轴2.如何在图中适当的显示轴标签
2023-06-26

android listview动态添加数据的方法是什么

在Android中,可以通过以下方法动态添加数据到ListView中:1. 创建一个数据源:首先,需要创建一个数据源,用于存储要显示在ListView中的数据。可以使用ArrayList或ArrayAdapter等数据结构来保存数据。2.
2023-09-16

android调用JNI SO动态库的方法是什么

这篇文章主要介绍“android调用JNI SO动态库的方法是什么”,在日常操作中,相信很多人在android调用JNI SO动态库的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”android调用
2023-06-25

Android冷启动耗时优化的方法是什么

这篇文章主要介绍了Android冷启动耗时优化的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android冷启动耗时优化的方法是什么文章都会有所收获,下面我们一起来看看吧。1,背景最近开发了一个新的
2023-06-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录