android中的帧动画(Frame)+图片自动播放器(ViewFlipper)
2015-11-23 10:04
633 查看
android中的帧动画(Frame)
实现Frame的两种方式:
①:在xml文件的基础上
②:在java代码的基础上
先说一下我对帧动画的理解:创建某个对象用来放一帧一帧的动画,然后start()就可以了,其实就是一张张图片评出来的,像连环画一样第一种方法:
①主xml文件中(创建一个ImageView,用来显示动画【也就是图片】):
<ImageView android:id="@+id/image" android:layout_width="200px" android:layout_height="200px" />
②frame.xml文件(用来存储图片和图片间隔时间的xml, res/anim/frame.xml):
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/tupian1" android:duration="500"></item> <!—duration代表时间间隔 --> <item android:drawable="@drawable/tupian2" android:duration="500"></item> <item android:drawable="@drawable/tupian3" android:duration="500"></item> </animation-list>
③java文件中:
ImageView iv; AnimationDrawable ad;//这个可以看做是帧动画的容器 iv = (ImageView) findViewById(R.id.image); iv.setBackgroundResource(R.anim.frame);//让iv显示图片 ad = (AnimationDrawable) iv.getBackground(); //把iv中图片添加到帧动画容器中 ad.start();//开始动画 ad.stop();//停止动画
第二种方法:
①在主xml文件中,添加一个布局,用来显示动画,大小自定:
<LinearLayout android:id="@+id/lll" android:layout_width="200dp" android:layout_height="150dp" android:orientation="horizontal"> </LinearLayout>
②在java文件中,创建一个类:
public class FrameTest2 extends View { private AnimationDrawable ad = null; private Context mContext = null; private Drawable mbitAnimation = null; public FrameTest2(Context context) { // TODO Auto-generated constructor stub super(context); mContext = context; ad = new AnimationDrawable(); for (int i = 1; i <= 3; i++) { int id = getResources().getIdentifier("tupian" + i, "drawable", mContext.getPackageName()); mbitAnimation=getResources().getDrawable(id); ad.addFrame(mbitAnimation, 1000); /*增加一帧动画,间隔为一千毫秒,这里的getIdentifier中的三个参数的意思是:文件名字,文件属性,包名,可以看做是R.drawable.XXXX */ } /* mbitAnimation = getResources().getDrawable(R.drawable.tupian2); ad.addFrame(mbitAnimation, 1000); mbitAnimation = getResources().getDrawable(R.drawable.tupian1); ad.addFrame(mbitAnimation, 1000); mbitAnimation = getResources().getDrawable(R.drawable.tupian3); ad.addFrame(mbitAnimation, 1000); */ // /**/中的部分可以与上面的for循环中的代码同义替换 ad.setOneShot(false);//执行一次? setBackgroundDrawable(ad);//算是跟View绑定了 ad.start(); }
③在主类中:
LinearLayout ll; View viewtest; ll = (LinearLayout) findViewById(R.id.lll); viewtest = new FrameTest2(this); //生成View对象 ll.addView(viewtest); //添加View到xml文件中
另外补充个方法:将java文件生成的view如何添加到xml中的某个确定的位置,由于我实在找不到可以直接在View控件里添加java代码生成的View,所以只能借助布局文件对象的addView方法。哪位高人有其他的方法,求指教!!!
有些代码可能比较简单,我本来想上传源代码,可是不会,呵呵哒
如果要实现图片自动浏览的功能,用ViewFlipper更加方便
主布局文件(activity_main.xml):<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ViewFlipper android:id="@+id/vf" android:layout_width="match_parent" android:layout_height="187dp" android:flipInterval="1000" android:persistentDrawingCache="animation" > <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/img1" /> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/img2" /> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/img3" /> </ViewFlipper> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="auto" android:text="自动播放" /> </LinearLayout>
注意这里直接在布局文件注册了onclick事件。
主activity文件(MainActivity.java):
public class MainActivity extends Activity { ViewFlipper vf; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vf = (ViewFlipper) findViewById(R.id.vf); } public void auto(View source) { vf.setInAnimation(this, android.R.anim.slide_in_left); //设置图片进入的动画 vf.setOutAnimation(this, android.R.anim.slide_out_right); //设置图片出去的动画 vf.startFlipping(); } }
相关文章推荐
- Android编程之MD5加密算法实例分析
- android studio使用教程(四)Gradle简单介绍
- android process and thread
- Android Studio之版本管理工具Git (图文教程)
- Android项目开发经验小结----ListView的单选模式和多选模式
- Android AutoLayout全新的适配方式 堪称适配终结者
- Android写文件到SDCard
- android截屏
- Android中延迟加载的问题
- 关于Android的横竖屏设置
- Android FileUtil(android文件工具类)
- Android手机推送方案
- Mono for Android 优势与劣势
- Android广播机制概述
- Android——活动的生命周期与启动模式
- Android Studio 删除行的快捷键
- Android布局优化
- 从零学Android(十一)、ActionBar基础知识
- android下hci log
- Android计时器 android.widget.Chronometer