我对Android编程很新。我正在尝试使用Android中的Canvas
创建位图图像的动画。我正在使用setAlpha()
来操纵位图的不透明度。我的drawFrame()
方法包含以下内容:
c = holder.lockCanvas();
drawScene(c, paint);
holder.unlockCanvasAndPost(c);
我的drawScene()
包括这一点:
Paint transparencyValue = new Paint();
transparencyValue.setAlpha(paint);
canvas.drawBitmap(boom.getImage(), logoToBoom.getX(), logoToBoom.getY(),
transparencyValue);
我想我必须插入一个循环来修改paint
从0到255并退回。到目前为止它还没有奏效,但我可能做错了。有人可以推荐一下吗?
编辑:这是我Runnable
的代码。 paint
是private double
设置为255. boom_activated
是boolean
,如果true
启用onTouchEvent
,则成为true
。它应保持Runnable
,直到setBoomState(false);
禁用它( private final Runnable DrawSceneThread = new Runnable() {
public void run() {
if (boom_activated && paint <= 0) {
paint = 0;
drawFrame();
setBoomState(false);
paint = 255;
} else if (boom_activated && paint >= 0) {
drawFrame();
paint -= 0.7;
} else {
drawFrame();
}`
)。出于某种原因,它仍然没有以不断增加的不透明度绘制位图。以下代码是否有效,或者我遗漏了什么?
drawScene()
在我scene_handler.postDelayed(DrawSceneThread, 25);
我有这句话:
{{1}}
答案 0 :(得分:0)
请参阅此主题 How to change a bitmap's opacity?
另外,我建议将您的Paint实例和绘制变量从drawScene中取出并在全局范围内声明它,以便您可以重复使用它。一遍又一遍地重建它会损害性能。
答案 1 :(得分:0)
您需要做的是随着时间的推移设置不透明度值的动画。您需要使用处理程序更新alpha值,然后在onDraw函数中绘制位图。请查看本教程,以便更好地了解通过处理程序更新UI:http://developer.android.com/resources/articles/timed-ui-updates.html