android studio 补间动画,Android动画学习(一):帧动画和补间动画
前言
在Android开发中会经常使用到动画,本次对Android中的动画做一个简单总结备忘。
Android中的动画主要分为三类:帧动画,补间动画和属性动画,下面将会对动画进行简单叙述。
一、帧动画
帧动画是将一张张单独的图片以连续的方式播放而形成的视觉动画。实现这种动画主要依靠UI图片资源。
帧动画的实现一般是依靠xml文件来实现,利用xml来实现不仅可以方便的定义资源文件,还能够有利于动画的复用。
示例代码如下,我们首先定义一个名为test_frame_anim2.xml的帧动画:
android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
android:drawable="@drawable/arrow_right"
android:duration="1000" />
android:drawable="@drawable/icon_warning"
android:duration="1000" />
android:drawable="@drawable/icon_left_arrow"
android:duration="1000" />
当我们调用时可以通过设置ImageView控件的图片resource实现动画的设置,示例代码如下:
/**
* 逐帧动画
*/
private fun setFrameAnimation() {
imageAnimFrame1?.setImageResource(R.drawable.test_frame_anim2)
val animationDrawable1 = imageAnimFrame1?.drawable as AnimationDrawable?
animationDrawable1?.start()
}
二、补间动画
1. 基本内容
常用的补间动画主要包括四种基本内容:
alpha(透明度)
scale(缩放)
translation(平移)
rotation(旋转)
补间动画可以采用上述四种中的一种或多种效果进行组合。
2. 实现
补间动画的实现主要包括有两种实现方式:XML实现和代码实现。
1. xml实现
补间动画的xml文件一般放置在res/anim/文件夹下面,我们在此文件夹下面新定义一个xml动画:test_flash_anim1.xml,代码如下(效果随便写的,可以看下xml参数):
android:duration="1000"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toAlpha="1.0" />
android:duration="1000"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
android:duration="3000"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="50%"
android:toYDelta="50%" />
android:duration="2000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="180" />
然后调用如下代码即可以调用xml动画:
private fun setFlashXMLAnim(view: View?) {
val animation: Animation =
AnimationUtils.loadAnimation(DemoApplication.mContext, R.anim.test_flash_anim1)
view?.startAnimation(animation)
}
对xml中部分属性做下简单说明:
1. alpha
标签
说明
duration
时长,单位ms
fromAlpha
起始透明度,范围0-1
toAlpha
结束透明度,范围0-1
interpolator
动画插值器,控制动画的速度
2. scale
标签
说明
fromXScale
起始X比例大小,当值为1.0时表示原大小
fromYScale
起始Y比例大小,当值为1.0时表示原大小
toXScale
结束X比例大小,当值为1.0时表示原大小
toYScale
结束Y比例大小,当值为1.0时表示原大小
pivotX
缩放起点X轴坐标,三种取值:数值,百分比,百分数P。起始点都是以左上角为标准。数值单位为px;百分比为当前view的百分比大小;百分数p为父控件宽度的百分比大小。
pivotY
缩放起始点Y轴坐标,取值同pivotX。
duration
动画时长,单位ms。
3. translate
标签
说明
fromXDelta
起始X轴位置
fromYDelta
起始Y轴位置
toXDelta
结束X轴位置
toYDelta
结束Y轴位置
duration
动画时长,单位ms
translate的位置标签的取值支持三种取值方式:数值,百分数,百分数P,和scale标签相似。
数值单位为px.
百分比表示为自身View大小的百分比
百分数P表示为父View大小的百分比
4. rotate
标签
说明
fromDegrees
起始角度,单位度。
toDegrees
结束角度,单位度。
pivotX
旋转中心的X轴位置,同样有数值,百分比,百分数P三种取值
pivotY
旋转中心Y轴位置,取值同pivotX。
duration
动画时长,单位ms。
fillAfter
动画执行完后是否保持最后状态,取true保持
5. set
set标签是可以将多个动画组合。
2. 代码实现
代码实现补间动画主要是依靠类Animation。这个类具有多个子类:AlphaAnimation、ScaleAnimation、TranslateAnimation、RotateAnimation。我们可以创建这几个子类对象实现对应的补间动画,以透明度动画为例,代码如下:
private fun setFlashAlphaAnim(view: View?) {
var animation: AlphaAnimation = AlphaAnimation(0f, 1.0f)
animation.duration = 1000
view?.startAnimation(animation)
}
除此之外,补间动画还有一些其他常见的方法:
方法
说明
fillAfter
设置在动画执行结束后的状态,设置为false则返回动画初始状态,设置为true保持动画执行结束之后的状态
repeatMode
动画重复模式,常见的有REVERSE和RESTART两种。REVERSE表示反向执行动画,RESTART表示重新执行动画。
repeatCount
动画重复次数
备注
在Android Studio编辑时能够看到当前的项目工程有着两个动画文件夹:anim和animator,这两个动画文件夹是有所区别的:
anim文件夹一般用来存放补间动画或者帧动画。
animator文件夹下一般用来存放属性动画。
android studio 补间动画,Android动画学习(一):帧动画和补间动画相关推荐
- 教你如何使用android studio 4.0发布release 版本 学习记录 仅供参考
教你如何使用android studio 4.0发布release 版本 学习记录 仅供参考 这是老师给我们布置的任务,我在这里做一个简单的总结,话不多说,直接上图上步骤吧 首先,在菜单栏中,点击 B ...
- 拥抱 Android Studio 之二:Android Studio 与 Gradle 深入
2019独角兽企业重金招聘Python工程师标准>>> 关于学习方式 曾经跟朋友讨论过我们所接受过的大学工科教育,都是一上来先学基础理论,最后再来一个金工实习.一开始不知道为什么而学 ...
- android studio怎么添加按钮,Android Studio 工具栏添加常用按钮
本文中 Android Studio 的版本为 android Studio 2.2 ,操作系统为 Windows,如有操作不同,可能是版本差异. 在工具栏中添加一些常用的按钮,如设置.DDMS,有利 ...
- android studio 测试工具,使用Android Studio进行单元测试
Android Studio已经到了1.2版本,国内的开发者基本也在从Eclipse向Android Studio进行转变,对于Android开发者,以后必将是Android Studio的天下. 昨 ...
- 如何使用Android Studio将网站转换为Android App
In this tutorial you will learn how to convert website to android app using Android Studio. 在本教程中,您将 ...
- android studio导入as项目,Android Studio(AS)--导入项目
1:首先,你必须要有一个工程(Project), 才可以打开项目(Module); (注意:Eclipse中的Workspace对应Android Studio 中的Project, Eclipse中 ...
- 视频教程-Android Studio 开发详解-Android
Android Studio 开发详解 1999年开始从事开发工作,具备十余年的开发.管理和培训经验. 在无线通信.Android.iOS.HTML5.游戏开发.JavaME.JavaEE.Linux ...
- android studio微信界面设计,android studio开发微信界面
android studio开发微信界面 android studio开发微信界面 功能说明:主要是做微信的简单的聊天界面,利用Fragment,进行微信界面的跳转 项目代码: 源代码地址 MainA ...
- Android Studio(3)---Android Studio的配置
Android Studio配置 Android Studio 提供诸多向导和模板,可用于验证系统要求(例如 Java 开发工具包 (JDK) 和可用内存)和配置默认设置(例如优化的默认 Androi ...
- android在java下建立模块,Android Studio:如何在Android模块中包含Java模块?
在Android工作室我有一个Android模块,我们称之为MyAndroid.我还有一个Java模块(不是独立的JAR,而是模块中的完整Java项目),我们称之为MyJava.Android Stu ...
最新文章
- Java中常见的异常
- python的符号lt和gt怎么输入_lt;lt;Python基础教程gt;gt;学习笔记 | 第12章 | 图形用户界面...
- 微型计算机电源的选购应注意哪些问题,购买小功率ups电源的注意事项
- 帆软报表(finereport)JS实现cpt中详细单元格刷新
- 【APICloud系列|37】 银联支付的实现
- python学习(八)定制类和枚举
- 怎么查询mysql的语法_mysql查询语法
- java caffe 验证码_Caffe深度学习 验证码识别 机器学习
- android app启动过程
- 那些年学过的Hibernate笔记
- TREND函数根据上半年各月产品销售量预算出未来销售量
- Windows10系统服务优化及分析(批处理)
- Visual Leak Detector(vld)无法显示内存泄露行号
- 使用 Wowza 录制直播流 (HTTPLiveStreamRecord)
- 【Paper】DeepConvLSTM:Deep Convolutional and LSTM RNN for Multimodal Wearable Activity Recognition
- Bytom储蓄分红合约解析
- 解决tomcat启动-Skipping unneeded JARs during scanning can improve startup time and JSP compilation time
- 微信小程序全栈开发实践 第三章 微信小程序开发常用的API介绍及使用 -- 3.9 网络接口简介(九)扩展wxp模块的request3方法,实现用户登录的自动融合
- linux界面回收站图标没了,Ubuntu美化教程:在AWN中添加“显示桌面”和“回收站”图标...
- IDL转换BSQ格式至BIL
热门文章
- 文件访问被拒绝XXX 你需要权限才能执行此操作你需要计算机管理员提供的权限才能对此文件进行更改
- JS实现获取今天星期几
- 什么是知识产权贯标?
- spring boot的 banner
- 玩转数学答题赢大奖,福利抢先拿!
- 【精简操作】Mathtype安装出现错误“53”/未找到.wll文件/选项卡灰色等问题
- 用计算机弹音乐的歌谱《奇迹再现》,奇迹再现曲谱_奇迹再现的歌谱
- 最新版PS CC 2017版下载,可汉化可激活
- 大数据——DBT:数据治理、血缘关系DBT的安装及测试(基础使用篇)
- GDSOI2019退役祭