我是一名新手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是一个设置为255的私有double变量。boom_activated是一个布尔变量,在onTouchEvent启用它时变为true。它应该保持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);
。