Frame动画的两种方法写死的Xml与SD卡图片动态加载

注意:

有时动画会出现停留在第一帧不播放的情况。

是因为window还没有加载好。

所以最好这样:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
	initViews();// 要执行的动画方法
	super.onWindowFocusChanged(hasFocus);
}
第一种: Xml
①:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true">  


<item android:drawable="@drawable/splash01" android:duration="3000" />      
<item android:drawable="@drawable/splash02" android:duration="3000" /> 
<item android:drawable="@drawable/splash03" android:duration="3000" />      
</animation-list>

看看内容应该是很好理解的,<animation-list>为动画的总标签,这里面放着帧动画 <item>标签,也就是说若干<item>标签的帧 组合在一起就是帧动画了。<animation-list > 标签中android:oneshot="false" 这是一个非常重要的属性,默认为false 表示 动画循环播放, 如果这里写true 则表示动画只播发一次。 <item>标签中记录着每一帧的信息android:drawable="@drawable/a"表示这一帧用的图片为"a",下面以此类推。android:duration="100" 表示这一帧持续100毫秒,可以根据这个值来调节动画播放的速度。

②:
拿到布局文件中的ImageView
 imageView.setBackgroundResource(R.drawable.animation);
 /**通过ImageView对象拿到背景显示的AnimationDrawable
 animationDrawable = (AnimationDrawable) imageView.getBackground();
③:
animationDrawable.start(); 开始这个动画
animationDrawable.stop(); 结束这个动画
animationDrawable.setAlpha(100);设置动画的透明度,取值范围(0 - 255)
animationDrawable.setOneShot(true); 设置单次播放
animationDrawable.setOneShot(false); 设置循环播放
animationDrawable.isRunning(); 判断动画是否正在播放
animationDrawable.getNumberOfFrames(); 得到动画的帧数


第二种: 从SD卡加载图片

①:
ImageView  view = (ImageView) findViewById(R.id.splash_anim);
AnimationDrawable d = new AnimationDrawable();
view.setImageDrawable(d);
AnimationDrawable animationDrawable = (AnimationDrawable)view.getDrawable();

②:
ArrayList<Bitmap> list = new ArrayList<Bitmap>();
Bitmap bitmap = getImageFromLocal("splash01.jpg");
Bitmap bitma = getImageFromLocal("splash02.png");
Bitmap bitm = getImageFromLocal("splash03.png");


Log.i("animationDrawable","图片在添加转化为bitmap");
Log.i("animationDrawable","animationDrawable是否为空:"+(animationDrawable==null));
animationDrawable.addFrame(new BitmapDrawable(bitmap),1000);
animationDrawable.addFrame(new BitmapDrawable(bitma),1000);
animationDrawable.addFrame(new BitmapDrawable(bitm),2000);
③:
animationDrawable.start(); 
/**
* 从SD卡加载图片
* 
* @param imagePath
* @return
*/
public Bitmap getImageFromLocal(String name) {
String imagePath = "/mnt/sdcard/" + name;
File file = new File(imagePath);
if (file.exists()) {
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
file.setLastModified(System.currentTimeMillis());
return bitmap;
}
return null;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇