android开始动画
㈠ Android 开关机动画规范
本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
开机动画压缩包必须以 存储方式 进行压缩,否则无法播放开机动画。
开机动画压缩包不能包含 bootanimation 文件夹,必现是如下格式。
开机动画图片需要统一 格式 跟 size ,不然因为大小不统一,播放出来很丑。
desc.txt 文件用来定义开机动画的播放配置。
以 1280* 720 的图片举例如下:
前两位 720 和 1280 分别表示要显示动画的 width 和 height .
10 是定义动画播放的预订 帧率(FPS) .
这个帧率 FPS 是指:每秒动画播放的帧数。
此帧数是一个理想值,并不一定代表动画实际帧率,假设预订帧率为 FPS_I ,预订每一帧解析的时间 t_I, 则 t_I=1/FPS_I 。
假设某一帧从解析到渲染耗时为 t_r ,当 t_r<=t_l ,则渲染完这一帧后,动画这个 thread 会 sleep(t_l-t_r) 的时间,也就说这一帧最后的耗时就 t_l ;
假设某一帧从解析到渲染耗时为 t_r ,当 t_r>t_l ,则渲染完这一帧后,动画这个 thread 会马上开始下一帧,也就说这一帧最后的耗时就 t_r 。
所以, desc.txt 内设置的这个帧率并不能代表动画的实际帧率,实际的帧率是和系统开机的 performance 有关,因此不是说在 desc.txt 设置帧率越大越好,反而容易出现当某一帧耗时较长,就容易给用户某一帧卡顿的体验,目前这个 FPS 的值一般设置在 13 左右。
当然,设置 FPS 为 13 并不是说系统的 performance 比较低,本身在开机动画阶段,系统进入 Bootup Android 阶段,许多进程需要启动,系统的主要工作应该集中与开机启动的进程,因此不建议动画的图片过于复杂,导致系统开机的 Performance 变差。
第一个参数p是 google default 的设计,请保留以 p 开头。
第二个参数 1 表示这一行对应 folder 所需要 循环播放的次数 ,如果是 0 则表示是 无限循环播放 ,直到系统 ready 后通过被动退出。
第三个参数 0 表示这一行对应 folder 里面的每一帧图片依次解析渲染完成后,要进入下一个循环,动画这个线程需要 pause多久 。
第四个参数 folder1 表示对应设置规则的 folder 的 path 。
默认的设计,都是将顺序播放的动画放在一个 folder ,定义这个 folder 所需要循环的次数;在无限循环的 folder 内放置一张图片,保证动画没有收到退出指令的时候,动画可以一直显示.
由于循环播放的 folder 中的每帧都是以纹理对象存储在纹理内存中再 upload 到 GPU 做渲染的,以便下次循环播放不需要重新解析.如果动画包中的图片太多或者图片的 size 很大时,则会导致占用较多的 memory ,因此为保证开机的 performance ,开机动画不建议太复杂.
友情推荐:
Android 干货分享
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
㈡ 吐血总结【Android动画】必知必会
通过AnimationListener可以监听Animation的运行过程,有三个方法分别是Animation开始的时候调用,完成的时候调用,重复的时候调用。
AnimationSet,动画集合。 我们最常用的是调用其 addAnimation 将一个个不一样的动画组织到一起来,然后调用view 的 startAnimation 方法触发这些动画执行。
setAnimation是告诉该控件我待会要执行什么动画,而要执行的的动画,是需要手动添加的。并且需要父view在动画快要开启的时候,调用invalidate。需要一定的条件限制。
而startAnimation告诉该控件,我要立马执行该动画,该动画就是已经设置好的动画。调用它时就会立即开始动画。
参看这篇文章: Android动画之Interpolator插补器和TypeEvaluator估值器
Property Animation提供了Animator.AnimatorListener和Animator.AnimatorUpdateListener两个监听器用于动画在播放过程中的重要动画事件。下面是两个监听器接口和方法的一些介绍和说明:
上面讲到ViewAnimation有许多xml加载,当然PropertyAnimation也可以对应xml加载,位置为 res/animator/
animator.xml
调用就用到了AnimatorInflater类了
组合动画也可以xml加载
在 Android 3.0 中给 View 增加了一些新的属性以及相应的 getter、setter 方法。Property Animation系统可以通过修改 View 对象实际的属性值来实现屏幕上的动画效果。此外,当属性值发生变化时,Views 也会自动调用 invalidate() 方法来刷新屏幕。 View 类中新增的便于实现 property 动画的属性包括:
1 . 第一个参数:设置目标对象,即操纵的view
2 . 第二个参数:设置操作的动画的属性值(见上面讲解的动画属性值)
3 . 第三个参数:可变数组参数 (初始值,中间值,结束值)。可以有一个到N个,如果是一个值的话默认这个值是动画过渡值的结束值。如果有N个值,动画就在这N个值之间过渡。
针对同一个对象多个属性,同时作用多种动画
可以调用其playTogether(同时执行)、playSequentially(顺序执行)、play、before、with、after 等方法设置动画的执行顺序,然后调用其start 触发动画执行。
Android 3.0后,谷歌给View增加animate方法直接驱动属性动画。
㈢ Android 12.0 适配——应用启动动画
应用启动时如果在Application中做了很多事务,会导致启动时有个白屏的时间,体验十分不好。通常的做法是给Application或者第一个启动的Activity的主题添加上android:windowBackground属性来优化体验。
到了Android 12,官方新增了SplashScreen Api,可为所有应用添加新的启动动画,显示速度十分实时,所以到了Android 12,我们就不必自己添加android:windowBackground属性,最重要的是它是能向下兼容的。
在Android 12上已经默认使用了SplashScreen,如果不考虑向下兼容的问题,不需要任何配置,系统就会自动使用App的图标作为SplashScreen的图标。
这个时候就需要一些适配操作
注意的是必须是在第一个启动的Activity同目录的build.gradle中添加依赖
在Style.xml新建一个主题,parent必须为Theme.SplashScreen
windowSplashScreenBackground:启动动画的背景
:启动动画的图标
:启动动画的时间
postSplashScreenTheme:启动动画退出后的启动页的主题
在setContentView()之前添加上installSplashScreen()即可
这里我用的是一台11的机器,可以看到效果基本上和12.0差不多,如果不去适配的话11的机器是看不到这个页面的(请忽略我自己做的图标)
可以看到适配很简单,另外可以看到installSplashScreen()是有返回值的,我们可以利用这个值去做一些更强大的事情,例如延长启动页面停留时间、设置动画效果等,这些大家自己去研究。
㈣ 怎么制作Android手机的开机动画
先创建一个文件名为bootanimation.zip 一定是这个不能修改,里面包含part0, part1文件夹 和desc.txt文件。
1、文档结构说明:
part文件夹里面放的是动画拆分的图片, 格式为png 大家可以自己制作。desc.txt里面是播放的设置格式是这样的:
480 800 15 p 1 0 part0 p 0 0 part1
480 800是指显示的分辨率 宽 高;15是一秒的帧数;p后面的数字是指播放次数0为循环;后面那位数字 一般为0 pause ;
(If pause = 10, it will show the last frame and thensleep 10/fps seconds before continuing with the animation.)
part0为文件夹名。
part0是播放一遍的part1是循环播放直到开机2、制作bootanimation.zip1)首先图片一定要转换成PNG格式,建议找到的图片要和自己机子的分辨率一样,如果不是也可以的 有可能变形注意图片的大小要统一建立part0 , part1文件夹 放进一组连接的图片组。2)开始压缩成ZIP格式名字一定要bootanimation.zip 压缩方式一定是存储。3)开始写desc.txt。
4)将打包好的bootanimation.zip放到system\media\下,重启。
㈤ 手机如何设置开机动画
问题一:手机开机动画怎么设置 手机开机动画的设置可以按以下步骤进行:
1、下载zip格式的开机关机素材包。
2、对下载下来的文件重命名为:bootanimation.zip。将该文件放到手机SD卡中。
3、打开手机“re管理器”。进入根目录/system/media,此时所看到的就是开机关机动画所在的目录。
4、选中系统默认的开机关机动画包,剪切之后放到其他目录。一旦以后想要恢复默认的开机关机画面,可以到时候恢复。
5、在剪切的时候,首先要挂在歼销为读写状态。然后移动到其他目录,这里放到根目录。
6、找到之前放到sd卡当中的bootanimation.zip文件。复制该文件放到,进入根目录/system/media 完成之后,重新启动手机。此时会看到手机的开机画面已经变成了,你刚才所下载的开机动画了。
问题二:安卓手机如何更改开机 关机 动画 前提:手机要ROOT提权,用R.E.管理器粘贴复制
开机画面,一般是分为2屏,当然也有3屏的说法,不管怎样,我这里说得就是最后的一屏,按照bootanimation的字面意思翻译,大概也就氏薯游是开机动画的意思,那这就不说第几屏了,直接用“开机动画”这词。
首先,开机动画的地址:system\media\bootanimation.zip。。。要修改开机动画就是修改bootanimation这个文件。如果说你的手机里没有这手迅个文件,那就是说明你用的是官方原始版本的rom开机动画没有被修改过,但这不碍事,没有就放一个进去,到时候想换回最原始的开机画面,也可以把bootanimation这个文件删了。官方最原始的开机动画在system\ framework\framework-res.apk\assets\images里面,里面主要是2张图片,高手可以去研究一下,说不定通过这个文件可以用代码实现动画的过程。
接下来,说说bootanimation.zip这个文件的结构。bootanimation里面主要包含一个desc.txt以及N个文件夹。而文件夹里面放着的就是你要的开机动画的图片。decs.txt的作用就是指导系统如何去执行你的开机画面。
下面继续说说desc.txt这个文档要怎么写。
先看例子,如果我的开机动画要用到2个文件夹,分别是part1和part2,。。。。我希望开机的时候,先把part1里面的图片都播放一遍,然后再循环播放part2里面的文件,直到进入系统。那么decs.txt文档的内容应该如下:
320 480 5
p 1 0 part1
p 0 0 part2
就这么多,现在解释一下这些命令吧。
第一行,320 480是代表你屏幕的分辨率,因为我们的胖6是320*480的,这就不多说了。后面的5是说:5帧每秒,不懂的可以这么理解,5是代表一秒钟播放5张图片。就这么简单。
第二行,p 1 0 part1。p应该是play吧,也就是播放的意思。1是播放一次。0是空指令,就是什么都不做。part1就是说,这条指令是针对part1这个文件夹的。整条指令的意思就是,播放part1里面的图片1次,然后什么都不做,马上进入下一条指令。
第三行,p 0 0 part2。p依然是播放。第一个0这里是代表循环播放,第二个0和上面第二条指令一样,代表什么也不做。part2也就不多说了。
至于为什么第一个0为什么是代表循环,只能这么说,这事国际惯例,就像用迅雷的时候,0代表不限制速度一样,系统规定的,你知道就好,别纠结。
总结公式如下
第一条指令:屏幕的分辨率(空格)播放频率
第二条指令:p(空格)播放次数(空格)后续操作(空格)作用文件夹
第三条指令:同上
第N条指令:同上
屏幕分辨率的格式是:宽(空格)高,320 480。。。播放频率,上面已经说清楚了,至于到底要用多大的数字,视你开机动画的张数而定,比如说,一共有100张图片,开机时间是20秒,那么100/20就是5。
播放次数,1是代表一次,0代表循环播放。如果要播放2次的话,就是就是打个2上去,应该是这样吧,反正我是没试过,只试过0和1.后续操作,0代表什么都不做,直接进入下一条指令。10是代表稍作停顿。
至于文件夹里面的图片,比较简单,首先,纠正一个说法,之前说必须要是png格式,经过我试验证明,jpg格式的也可以,其他的有待试......>>
问题三:三星手机怎么设置开机动画 点击:shouji56/phone/147047
希望对您有所帮助,不谢,向雷峰同志学习
问题四:安卓手机开机动画怎么设置 需要root之后下载一个软件,我记得需要的文件不是gif,可能还需要转换后才能添加
问题五:华为手机怎么设置开机动画啊 在设置那。
希望采纳
问题六:如何关闭手机开机动画 手机设置里面,选择开机方式无
问题七:安卓手机开机画面和动画怎么改,两个都要改 开机画面,一般是分为2屏,当然也有3屏的说法,不管怎样,我这里说得就是最后的一屏,按照bootanimation的字面意思翻译,大概也就是开机动画的意思,那这就不说第几屏了,直接用“开机动画”这词。
首先,开机动画的地址:system\media\bootanimation.zip。。。要修改开机动画就是修改bootanimation这个文件。如果说你的手机里没有这个文件,那就是说明你用的是官方原始版本的rom开机动画没有被修改过,但这不碍事,没有就放一个进去,到时候想换回最原始的开机画面,也可以把bootanimation这个文件删了。官方最原始的开机动画在system\ framework\framework-res.apk\assets\images里面,里面主要是2张图片,高手可以去研究一下,说不定通过这个文件可以用代码实现动画的过程。
接下来,说说bootanimation.zip这个文件的结构。bootanimation里面主要包含一个desc.txt以及N个文件夹。而文件夹里面放着的就是你要的开机动画的图片。decs.txt的作用就是指导系统如何去执行你的开机画面。
下面继续说说desc.txt这个文档要怎么写。
先看例子,如果我的开机动画要用到2个文件夹,分别是part1和part2,。。。。我希望开机的时候,先把part1里面的图片都播放一遍,然后再循环播放part2里面的文件,直到进入系统。那么decs.txt文档的内容应该如下:
320 480 5
p 1 0 part1
p 0 0 part2
就这么多,现在解释一下这些命令吧。
第一行,320 480是代表你屏幕的分辨率,因为我们的胖6是320*480的,这就不多说了。后面的5是说:5帧每秒,不懂的可以这么理解,5是代表一秒钟播放5张图片。就这么简单。
第二行,p 1 0 part1。p应该是play吧,也就是播放的意思。1是播放一次。0是空指令,就是什么都不做。part1就是说,这条指令是针对part1这个文件夹的。整条指令的意思就是,播放part1里面的图片1次,然后什么都不做,马上进入下一条指令。
第三行,p 0 0 part2。p依然是播放。第一个0这里是代表循环播放,第二个0和上面第二条指令一样,代表什么也不做。part2也就不多说了。
至于为什么第一个0为什么是代表循环,只能这么说,这事国际惯例,就像用迅雷的时候,0代表不限制速度一样,系统规定的,你知道就好,别纠结。
总结公式如下
第一条指令:屏幕的分辨率(空格)播放频率
第二条指令:p(空格)播放次数(空格)后续操作(空格)作用文件夹
第三条指令:同上
第N条指令:同上
屏幕分辨率的格式是:宽(空格)高,320 480。。。播放频率,上面已经说清楚了,至于到底要用多大的数字,视你开机动画的张数而定,比如说,一共有100张图片,开机时间是20秒,那么100/20就是5。
播放次数,1是代表一次,0代表循环播放。如果要播放2次的话,就是就是打个2上去,应该是这样吧,反正我是没试过,只试过0和1.后续操作,0代表什么都不做,直接进入下一条指令。10是代表稍作停顿。
至于文件夹里面的图片,比较简单,首先,纠正一个说法,之前说必须要是png格式,经过我试验证明,jpg格式的也可以,其他的有待试验,不过只支持静态图片这点应该是真的,动态图片同样有待试验。其次,关于图片的尺寸,是不做要......>>
问题八:iPhone怎么设置开机动画 前提必须是越狱。然后可以用Cydia,就是用这个下载LogoMe
打开Cydia依次点击-Sections-System--LogoMe-Install,再Confirm成功安装,
点击Return to Cydia按钮,按下Home键返回到Springboard,然后点击LogoMe图标。当打开LogoMe时,可能会需要连接到互联网下载一些所需的文件。一旦文件被下载,按下屏幕底部的Select Logo标签。然后会让我们需要为开机画面输入一个图片的地址。
输完就按下Download按钮,将指定的Boot Logo下载到LogoMe中。完成之后,您可以选择屏幕底部的Install Logo标签。
按下Previre按钮预览你下载的Boot Logo(开机画面),确定它是否是你想要的。
点击Install按钮,即可将你指定的那个Boot Logo(开机画面)安装到iPhone中。下一次开机时,就会看到画面已被这个取代啦!
问题九:安卓手机怎么修改自定义开机动画 简易教程:
1、手机必须ROOT了的
2、装个可以进去系统文件的文件浏览器 ,如:RE管理器 (复制覆盖系统文件时,记得修改 “只读” “读写”权限)
3、在你看中的ROM里面把bootanimation.zip复制出来。bootanimation.zip在哪里呢?ROM包一般是ZIP格式,先在电脑桌面建个文件夹,把它解压到那新建文件夹里面。打开后不外乎就几个文件夹和文件:
自己动手做过精简包的人,基本都会,也知道里面是什么。具体不详细说了,回归主题,bootanimation.zip一般就在system\media 里面。如果没有就查看system其他文件夹,bootanimation.zip这样格式和名字的文件只有一个,但bin里面的绝对不是,后面再说bin,这个是关乎开机声音的。
bootanimation.zip里面装的就是开机动画了,里面基本是由 part文件夹 和 desc文档 组成,part文件夹放的是png , desc则是运行参数,可以编辑图象大小、动画帧、时间频率什么的。总之有能力的可以自己制作编辑。 小白们就无视吧。直接拿看中的包裹移花接木就是了
4、把bootanimation.zip复制到SD卡里面,然后用RE管理器,复制,然后寻找手机系统里面原带的bootanimation.zip并覆盖(记得改读写权限,不然无权覆盖系统文件),这样就把开机动画更换好了。
5、开机动画很多人都会换,很多地方都有教程,重点来了,怎么换开机声音呢?我这里的换并非可以自定义,当然自定义不是不可能,那得会编程。俺只是个小白,只会搬别人编辑好的。留意上图boot.ogg的文件,这个就是附带在我要更换的开机动画的声音文件。大多数都会把它和bootanimaion.zip放一起的,当然也有例外的,那个就麻烦点,得自己去寻找。然后把它一起复制到手机SD卡,再搬到同样的位置。
6、重重点来了,就这么把这两个文件搬到系统,只会有开机动画,还是不会有声音滴。。上面提到的bin文件夹,位置是system\bin 在里面寻找到 bootanimation 文件。把它复制并覆盖到手机system\bin 里面的 bootanimation (记得改读写权限,不然无权覆盖系统文件),这样就大功告成了 。在bin 里面的 bootanimation 是说明和引导文,编程方面的,C语言吧,运行编写之类的。如果你是学编程或懂这方面的,大可以自己动手修改,小白们就像我那样做移花接木吧~~~
绝对的自定义开机声,倒不是小白们不能做到的,把自己想要的声音,名字和格式该成转化成源声音文件名字格式,然后覆盖就可以了。
问题十:如何在linux程序里更改android手机开机动画 单纯的自己改,只要替换就可以了 也可以直接root后进行替换(这是在手机上)。。如果是linux上的话 android开机动画叫源码位于frameworks/base/cmds/bootanimation下,这个程序会将/data/local/bootanimation.zip或/system/media/bootanimation.zip里面的png图片以动画的形式播放出来。 看看源码就知道了。
首先看一下定义的常量:
#define USER_BOOTANIMATION_FILE /data/local/bootanimation.zip
#define SYSTEM_BOOTANIMATION_FILE /system/media/bootanimation.zip
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE /system/media/bootanimation-encrypted.zip
BootAnimation::readyToRun()
进入一个if判断语句
if ((encryptedAnimation &&
(access(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE, R_OK) == 0) &&
(mZip.open(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE) == NO_ERROR)) ||
((access(USER_BOOTANIMATION_FILE, R_OK) == 0) &&
(mZip.open(USER_BOOTANIMATION_FILE) == NO_ERROR)) ||
((access(SYSTEM_BOOTANIMATION_FILE, R_OK) == 0) &&
(mZip.open(SYSTEM_BOOTANIMATION_FILE) == NO_ERROR))) {
mAndroidAnimation = false;
}
BootAnimation::threadLoop()
if (mAndroidAnimation) {
r = Android(); 执行android字体闪动的图片
} else {
r = movie(); 执行bootanimation.zip中提供的动画图片
}
1
==> BootAnimation::Android()会加载images/android-logo-mask.png和images/android-logo-shine.png
==> BootAnimation::movie()会加载bootanimation.zip中的内容
我们下载的源码里默认是没有那些个.zip动画的,所以总会跳到android字体闪动的画面
所以如果你系那个用.zip的动画那么把你做好的动画拷贝到编译好对应的目录下即可,然后执行mak......>>
㈥ Android动画之ViewPropertyAnimator(专用于view的属性动画)
属性动画对比原来的视图动画有很多的优点,属性动画可以对所有的对象做动画操作,但Android开发中需要做动画最多的还是View,如果只是对一个view做动画,很少的几个属性还行,如果是对同一个view的十几个属性同时做动画,相信属性动画的写法是比较繁琐的。ViewPropertyAnimator从名字就可以看出是专用于View的属性动画,在API12被提供。ViewPropertyAnimator专用于操作View动画,语法更加简洁,使用更加方便。
developer: https://developer.android.google.cn/reference/android/view/ViewPropertyAnimator
如何获取ViewPropertyAnimator 对象:
ViewPropertyAnimator 没有构造函数,通过View.animate()方法可以方便的获取ViewPropertyAnimator 对象,此时获取的动画对象就专用于操作当前view。
setDuration(); //设置动画时长
setInterpolator(); //设置插值器
setStartDelay(); //设置延迟开始时间
start(); //立刻开始动画
cancel(); //取消动画
明显看到图片先往下走了一段,然后向左的动画才开始执行。
链式操作
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).translationY(300).scaleX(0.5f);
以上函数的执行,会导致相同动画的cancle,以上函数都是除了坐标相关都是以view左上角为坐标原点。
方法都比较简单,下面距几个列子:
首先利用translationX,translationXBy来区分By的意义:
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationY(300);
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationYBy(300);
translationYBy 可以多次移动View,translationY多次执行没有效果。
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).x(100).y(100);
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).rotation(270);
据观察withEndAction相当于动画开始,withStartAction相当于动画结束。
可以看到可以添加setUpdateListener监听,但无法通过这个监听函数监听到当前动画的信息,所以这个监听函数可能用处不大。
Animation动画概述和执行原理
Android动画之补间动画TweenAnimation
Android动画之逐帧动画FrameAnimation
Android动画之插值器简介和系统默认插值器
Android动画之插值器Interpolator自定义
Android动画之视图动画的缺点和属性动画的引入
Android动画之ValueAnimator用法和自定义估值器
Android动画之ObjectAnimator实现补间动画和ObjectAnimator自定义属性
Android动画之ObjectAnimator中ofXX函数全解析-自定义Property,TypeConverter,TypeEvaluator
Android动画之AnimatorSet联合动画用法
Android动画之LayoutTransition布局动画
Android动画之共享元素动画
Android动画之ViewPropertyAnimator(专用于view的属性动画)
Android动画之Activity切换动画overridePendingTransition实现和Theme Xml方式实现
Android动画之ActivityOptionsCompat概述
Android动画之场景变换Transition动画的使用
Android动画之Transition和TransitionManager使用
Android动画之圆形揭露动画Circular Reveal
Android 动画之 LayoutAnimation 动画
Android动画之视图动画的缺点和属性动画的引入
㈦ 【Android 动画】动画详解之补间动画(一)
之前很早就想写写Android 的动画,最近刚好有时间,大概聊一聊安卓动画。
个人习惯将动画分为:补间动画(透明度、旋转、位移、缩放)、帧动画、和属性动画,这一篇,我们先说说补间动画。
补间动画这个词出于flash,在两个关键帧( 可以理解成动画开始和结束 )中间需要做“补间动画”,才能实现图画的运动;插入补间动画后两个关键帧之间的插补帧是由计算机自动运算而得到的。
实际上,Android 的补间动画也是由我们指定动画开始、动画结束2个关键点,中间部分的动画由系统完成
在正式开始之前,我们先说下Android 系统的坐标系,屏幕左上角为坐标原点,假如屏幕为1080*1980,那么左上角为(0,0),右上角为(1080,0),左下角为(0,1980),右下角为(1080,1980)
所有动画有以下公共属性,注释比较详细,这里就不在详述了
ScaleAnimation有3种构造方法
我们先看第一种,其起始比例为0,缩放比例为1.4,即放大到1.4倍
效果如下:
第二种,pivotx,pivotY分别代表起始位置的x、y方向的坐标,我们设置为(100,100)
效果如下:
第三种,pivotXType和pivotYType有2种模式,RELATIVE_TO_SELF(相对于自身)和RELATIVE_TO_PARENT(相对于父布局),如果设置这个,pivotx,pivotY的值就应该是0-1的浮点数,这里分别对应xml中的%(自身)和%p(父布局)
TranslateAnimation有2种构造方法,和ScaleAnimation类似
效果如下:
效果如下:
RELATIVE_TO_PARENT
效果如下:
RotateAnimation有3种构造方法
顺时针720度
效果如下:
逆时针720度
效果如下:
效果如下:
再来RELATIVE_TO_PARENT
效果如下:
这是什么鬼???怎么跑到屏幕外面去了?
原来设置为RELATIVE_TO_PARENT时,旋转中心x方向应该为该空间离左边的边距+父布局宽度/2,y方向同理,而此时,我们布局中红色的Textview为居中状态,所以旋转中心为屏幕右下角。让我们来看个例子
修改布局如下:
效果如下:
这时,我们看到旋转中心x方向为离左边100dp处
AlphaAnimation只有1种构造方法
其中fromAlpha为动画开始的透明度;toAlpha为动画结束的透明度
效果如下:
效果如下:
AnimationSet是一个动画的集合,可以按照添加的顺序播放动画,让我们来看个例子,通过组合动画,实现旋转渐入动画
效果如下:
到这里,补间动画就介绍完了
参考资料: 自定义控件三部曲之动画篇
㈧ Android 制作逐渐显示动画(描边动画、矢量动画VectorDrawble)
Android 系统从5.0开始支持矢量图,可以通过 Android Studio自带的 Vector Assert 工具将SVG、PSD 转成VectorDrawble。
转化好的VectorDrawblew看起来好像挺复杂,是不是完全看不懂。没关系,只要转化的图形没有问题,你不用关心其内部数据。
我们直接进入矢量动画部分。
矢量动画的实现通过在xml定义<animated-vector>标签(其对应的Java对象是AnimatedVectorDrawable)实现,如下所示:
可以看到<animated-vector>标签是主要元素是target,它其实就起到一个桥梁作用,将动画和VectorDraw中的图形联系起来。
比如target1,它将属性动画splash_animator_draw和vectorDrawble对象中name等于line1的对象联系起来,即:动画将生效在line1对象上。
之前展示了由svg图片通过Android Studio Vector Assert工具转换过来的VectorDrawble,里面的实际上svg画图语法,<path>标签里的pathData包含了画图的路径(坐标)和语法
在实际使用过程中有几率遇到这样两个问题(笔者都遇到过):
其实以上两个问题都要求你掌握进阶知识,svg画图语法。
官方svg语法解析: https://www.w3.org/TR/SVG/paths.html
不喜欢看英文,去这篇博客: http://www.jianshu.com/p/a3cb1e23c2c4
对于Android程序员,Lottie的动画使用很简单,步骤如下:
1.接入Lottie
从动画实现上来说,Lottie动画应该是最简单的方法了。
Lottie的优点很明显:
Lottie的缺点:
好了,如果觉得本文对你有帮助,请关注、留言、点赞我,谢谢!