Android逐帧动画实现代码
发布时间 - 2026-01-10 22:45:24 点击率:次逐帧动画(Frame-by-frame Animations)顾名思义就是一帧接着一帧的播放图片,就像放电影一样。可以通过xml实现也可以通过java代码实现。逐帧动画适合实现比较简单的动画效果,如果要实现复杂动画不太建议使用逐帧动画。

xml方式实现:
step 1 : 在res/drawable目录下一个文件sample_animlist.xml:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@mipmap/sample_1" android:duration="100" /> <item android:drawable="@mipmap/sample_2" android:duration="100" /> <item android:drawable="@mipmap/sample_3" android:duration="100" /> <item android:drawable="@mipmap/sample_4" android:duration="100" /> <item android:drawable="@mipmap/sample_5" android:duration="100" /> <item android:drawable="@mipmap/sample_6" android:duration="100" /> </animation-list>
动画列表(animation-list)由一个或者多个item节点组成,item节点用来声明一个动画帧
drawable: 该帧的图片资源
duration : 播放时间 单位为毫秒
oneshot : 是否只播放一次,true表示只会播放一次,false表示一直循环播放
step 2:
利用ImageView作为播放载体
<ImageView android:id="@+id/iv_ani" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/sample_animlist" />
step3: 在Activity实现初始化 、暂停、播放。
public class MainActivity extends AppCompatActivity {
private ImageView iv_ani;
private AnimationDrawable mAnimationDrawable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_ani = (ImageView) findViewById(R.id.iv_ani);
mAnimationDrawable = (AnimationDrawable) iv_ani.getDrawable();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
//window初始化完毕 开始播放动画
animationStart();
}
@Override
protected void onPause() {
animationStop();
super.onPause();
}
private void animationStart() {
if (null != mAnimationDrawable)
mAnimationDrawable.start();//开始播放
}
private void animationStop() {
if (null != mAnimationDrawable)
mAnimationDrawable.stop();//暂停播放
}
}
纯Java方式实现
public class MainActivity extends AppCompatActivity {
private ImageView iv_ani;
private AnimationDrawable mAnimationDrawable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_ani = (ImageView) findViewById(R.id.iv_ani);
initAnimationDrawable();
}
private void initAnimationDrawable(){
mAnimationDrawable = new AnimationDrawable();
for (int i = 1; i <= 4; i++) {
int id = getResources().getIdentifier("sample_" + i, "mipmap", getPackageName());
Drawable drawable = getResources().getDrawable(id);
mAnimationDrawable.addFrame(drawable, 100);
}
mAnimationDrawable.setOneShot(false);
iv_ani.setImageDrawable(mAnimationDrawable);
}
}
addFrame(Drawable frame, int duration) : 添加一帧,并设置该帧显示的持续时间
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 逐帧动画
# Android Studio实现帧动画
# Android 帧动画使用详情
# Android动画系列之帧动画和补间动画的示例代码
# Android 帧动画的实例详解
# Android实现帧动画的两种方式
# 可以通过
# 就像
# 多个
# 不太
# 只会
# 顾名思义
# 大家多多
# 持续时间
# 播放时间
# item
# false
# mipmap
# duration
# http
# schemas
# apk
# oneshot
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
java中使用zxing批量生成二维码立牌
Laravel集合Collection怎么用_Laravel集合常用函数详解
JS弹性运动实现方法分析
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何用JavaScript实现文本编辑器_光标和选区怎么处理
香港服务器租用费用高吗?如何避免常见误区?
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
非常酷的网站设计制作软件,酷培ai教育官方网站?
如何为不同团队 ID 动态生成多个独立按钮
Python文件流缓冲机制_IO性能解析【教程】
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Android中AutoCompleteTextView自动提示
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何在阿里云购买域名并搭建网站?
高防服务器如何保障网站安全无虞?
Laravel如何升级到最新版本?(升级指南和步骤)
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
如何快速搭建自助建站会员专属系统?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
php json中文编码为null的解决办法
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
如何在腾讯云免费申请建站?
如何在橙子建站上传落地页?操作指南详解
如何用虚拟主机快速搭建网站?详细步骤解析
如何在宝塔面板创建新站点?
香港服务器如何优化才能显著提升网站加载速度?
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
微信小程序 闭包写法详细介绍
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在Windows环境下新建FTP站点并设置权限?
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
如何用AI帮你把自己的生活经历写成一个有趣的故事?
独立制作一个网站多少钱,建立网站需要花多少钱?
如何在阿里云虚拟服务器快速搭建网站?
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
如何在服务器上配置二级域名建站?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
网站制作报价单模板图片,小松挖机官方网站报价?
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
JavaScript常见的五种数组去重的方式
Laravel API资源类怎么用_Laravel API Resource数据转换
如何在Tomcat中配置并部署网站项目?

