Android开发之对Frame动画播放的补充
/*
* Android开发之对Frame动画播放的补充
* 北京Android俱乐部群:167839253
* Created on: 2012-5-08
* Author: blueeagle
* Email: liujiaxiang@gmail.com
*/
上次谈及Frame动画播放,需要有很多帧的图片。可以选择定义一个AnimationDrawable对象,然后加载需要的Frame帧动画图片。一般而言,图片在没有特殊要求的情况下,一系列的图片都做到了一张图片上,这就要求开发人员懂得在图片上做裁剪。需要的地方裁出来就可以了。
这里涉及几个知识点:
剪切区域:也称可视区域,是由画布进行设置的,它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的内容都将看不到。
/*
* Android开发之Frame动画播放的补充
* frameAnimationPlus.java
* Created on: 2012-5-08
* Author: blueeagle
* Email: liujiaxiang@gmail.com
*/
canvas.clipRect(0,0,bmpboom.getWidth()/10,bmpboom.getHeight());//假设是个爆炸效果的图片,一共有10帧放在一起的
//绘制位图
canvas.drawBitmap(bmpboom, -currentFrame*bmpboom.getWidth()/10,0, paint);
代码解释:
currentFrame表示需要使用的当前图片向X负坐标的位移。可以选择移动帧的位置。
默认绘制在画布的(0,0)点。
将代码写入View框架的Draw()函数中,或者是SurfaceView框架的自定义绘制函数中。并做相应的刷新操作就可以了。比如View框架中可以使用invalidate(),SurfaceView框架中可以使用线程的方式进行刷新。
clipRect()函数就是绘制可视区域的剪切函数,表示从(0,0)点,到(x,y)点,X,Y为参数。
如果要将位图绘制在(x,y)点的话,则代码应该如下编写:
canvas.clipRect(x,y,x+bmpboom.getWidth()/10,y+bmpboom.getHeight());
//绘制位图
canvas.drawBitmap(bmpboom, x-currentFrame*bmpboom.getWidth()/10,y, paint);