Android|Android 帧动画使用详情
目录
- Android 帧动画
- 1、帧动画
- 2、使用背景图片
- 3、使用src
Android 帧动画
1、帧动画
使用一系列不同的图片,然后像一卷胶卷一样按顺序播放,这是一种传统的动画,也可称为帧动画。也可以比喻为像一卷胶卷一样按顺序播放。
播放起来,有点像在看gif图。
本文介绍使用AnimationDrawable类来实现动画效果。
为了开发方便,我们可以在xml中指定动画各个帧的信息。
2、使用背景图片
【Android|Android 帧动画使用详情】这是第一个例子。我们先准备4张图片(图片请自备)放进
res/drawable/
中。在这个目录里,再新建一个文件
ani_frame_1.xml
。可以看到根节点
包含了4个item
。每个子节点都定义了一个帧。duration是这一帧的时常(毫秒)。
drawable
是指定可绘制资源。oneshot="false"
表示让动画一直循环播放下去。这样动画资源就准备好了。
在layout中准备一个ImageView,用它来显示动画
在activity中操作这个ImageView。把动画资源设置为背景。
var mFrameIv: ImageView? = null// override fun onCreate(savedInstanceState: Bundle?)mFrameIv = findViewById(R.id.iv1)mFrameIv!!.setBackgroundResource(R.drawable.ani_frame_1)
把ImageView的背景强转为AnimationDrawable。播放动画,要用
AnimationDrawable.start()
方法。var mFrameIv: ImageView? = null// override fun onCreate(savedInstanceState: Bundle?)mFrameIv = findViewById(R.id.iv1)mFrameIv!!.setBackgroundResource(R.drawable.ani_frame_1)
当动画正在播放时,调用
start()
方法是不会影响当前播放的。停止动画
,AnimationDrawable.stop()
val ani: AnimationDrawable = mFrameIv!!.background as AnimationDrawableani.stop()
stop()
方法可以让动画停止在当前帧。再调用start()
的话,会从头开始播放。文章图片
3、使用src
前面我们利用的是ImageView的背景资源。我们也可以使用
src
。准备另一个动画资源
ani_frame_2
。android:oneshot="true",
动画播放1次后就会自行停止并保持在最后一帧。! 注意,停止后并不是回到第一帧。
然后在layout中,把它设置为ImageView的
src
。在activity中就不是操作ImageView的
background
了,而是操作drawable
。// 启动val ani: AnimationDrawable = frameIv.drawable as AnimationDrawableani.start()// 停止val ani: AnimationDrawable = frameIv.drawable as AnimationDrawableani.stop()
可以看到,2个例子中都需要操作AnimationDrawable。
请务必注意,对
AnimationDrawable.start()
方法不能在 Activity 的 onCreate()
方法期间调用,因为 AnimationDrawable 尚未完全附加到窗口。如果想立即播放动画而无需互动,那么可能需要从 Activity 中的 onStart()
方法进行调用,该方法会在 Android 在屏幕上呈现视图时调用。AnimationDrawable类有几个属性可以注意一下
属性 | 说明 |
---|---|
isOneShot | 是否只播放1次,与xml中的android:oneshot对应 |
isRunning | 当前动画是否正在播放 |
numberOfFrames | 帧的数量 |
到此这篇关于Android 帧动画使用详情的文章就介绍到这了,更多相关Android 帧动画内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)
- Android|Android install 多个设备时指定设备