android frame 帧动画
帧动画实际有若干图像组成的动画,这些图像以一定的时间间隔顺序播放,由于人的视觉停留,看起来像一个动画
由于eclipse中定义帧动画布局是在res/anim文件夹下,但是在AndroidStudio中会报错,所以,在AndroidStudio中将帧动画的布局文件定义在res/drawable文件夹下
1,AnimationDrawable类
start() 开始播放
stop() 停止播放
isRunning() 是否在运行
isOneShot() 动画是否重复运行
setOneShot(boolean oneShot) 设置动画重复运行 true运行一次 false无限次运行
setVisible(boolean visible, boolean restart) 是否课件
getNumberOfFrames() 一共有几贞
getFrame(int index) 根据下标获得某贞动画
getDuration(int i) 时间间隔
addFrame(Drawable frame, int duration) 添加帧动画,可以是一帧,也可以是一个动画,当为动画是,duration标示添加的动画播放时间,即使当前动画没有播完也会直接跳过播放第一个动画
2,动画一般在drawable中创建xml格式文件,文件中有animation-list和若干个item组成,动画的播放顺序为item的顺序
3,添加动画方式
注意:
1> 一般播放动画之前会先执行stop,在执行start,这是因为只播放一次动画,动画会停留在最后一帧,这时候还是处于运行状态,也就是isRunning返回true,因此播放前先用stop停止在进行start播放
2> addfragment添加一个新动画,在停止原来动画时,并不会停止新添加的动画,也就是新添加的动画被看做一个整体,要想停止必须获得新动画的animationDrawable对象,添加动画受时间限制(addFragment第二个参数),即使到了停留时间未播放完,也会切换到下一个动画
4,监听动画中每一帧的播放状态
1>由于animation状态中并没有提供当前播放的哪一帧,但在源码中发现mCurFragment来保存当前的哪一帧,但该方法是私有的需要通过Java发射来修改这个变量的值
2>继承imageView类重写onDraw方法来监听每一帧的播放状态,当每一帧的动画开始播放时都会走ondraw方法