Android 帧动画 (一)
2023-09-14 09:04:24 时间
效果图:
帧动画的原理时什么?
把图片资源顺次排列,每张图片代表一帧,然后依次播放显示出来,实现人眼看到的动画效果。帧动画通过标签定义,然后在 Android 代码中把它设置给显示组件作为背景或者数据源,如 ImageView 的背景等,最后由 AnimationDrawable 提供的 start() 等方法进行播放控制。
自定义并实现一个帧动画,先在 res / drawable 新建 franeni.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--第一个是放入资源的uri-->
<!--第二个是播放的时间,1000为1秒-->
<item
android:drawable="@drawable/ic_one"
android:duration="1000"/>
<item
android:drawable="@drawable/ic_two"
android:duration="1000"/>
<item
android:drawable="@drawable/ic_three"
android:duration="1000"/>
<item
android:drawable="@drawable/ic_four"
android:duration="1000"/>
<item
android:drawable="@drawable/ic_five"
android:duration="1000"/>
</animation-list>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
tools:context=".MainActivity">
<!--将背景设置为自定义放入资源的xml文件夹-->
<ImageView
android:id="@+id/img_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/franeani"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 得到 ImageView 对象
ImageView imageView = findViewById(R.id.img_view);
// AnimationDrawable 实例化逐帧动画对象
AnimationDrawable frameAni = (AnimationDrawable) imageView.getBackground();
// 启动动画
frameAni.start();
/**
* 另外 AnimationDrawable 还提供了其它一些进行动画播放控制的方法
* public void stop() 停止播放动画
* public boolean isRunning() 判断当前动画是否处于播放状态
* public int getNumberOfFragmes() 获取总的帧数
* public Drawable getFrame(int index),获取 index 索引位置的帧图片对象
*/
}
}
总结:
* 另外 AnimationDrawable 还提供了其它一些进行动画播放控制的方法:
*
* public void start() 播放动画
* public void stop() 停止播放动画
* public boolean isRunning() 判断当前动画是否处于播放状态
* public int getNumberOfFragmes() 获取总的帧数
* public Drawable getFrame(int index),获取 index 索引位置的帧图片对象
相关文章
- (转)Android学习进阶路线导航线路(Android源码分享)
- android帧动画,移动位置,缩放,改变透明度等动画讲解
- android 属性动画
- Android属性动画源代码解析(超详细)
- android--显式跳转和隐式跳转的区别用法
- Android:导航栏置底
- 说说Android的广播(3) - 什么样的广播是并发的?
- 全套Android进阶指南,点击查看2022最新Android完整知识体系~
- android studio运行应用执行代码流程
- android CTS和GTS测试FAIL项解决集锦
- 定制android系统服务
- Android 写返回键
- Android 10.0 修改NavigationBar 图标宽高
- Android自己定义组件系列【8】——面膜文字动画
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0下面)
- android c++标准命名空间demo(五十八)
- 【Android】属性动画
- Android培训班(58)Dalvik虚拟机的JNI方法和类表示
- Android Studio 导入系统 jar包
- Android Studio设置打开文件标签多行排列显示
- Android开发 动画之translate(位移动画)
- Android 高德地图(带有定位和点击显示经度纬度)
- Android高性能音频之AAudio AAudioStreamBuilder之谜(三)