【发布时间】:2013-07-23 01:33:12
【问题描述】:
我正在开发我的一个 android 应用程序,但我遇到了一个小问题,它限制了它的功能。我正在使用 android 画布在屏幕上绘制动画(用于动态壁纸),但每当我尝试使用 Canvas.drawColor() 和 #01ffffff 之类的颜色(最后两位数字是 alpha 级别)进行绘制时,画布变暗!怎么可能?我在画布上绘制白色,虽然是非常透明的白色,但仍然是白色。怎么会越来越黑?
每帧都会绘制颜色。它用于提供淡入白动画,但不会淡入白。
我的代码:
public class MyWallpaperService extends WallpaperService {
...
private void draw() {
handler.removeCallbacks(drawRunner);
SurfaceHolder holder = getSurfaceHolder();
Canvas canvas = null;
if (holder.getSurface().isValid()) {
if (visible) {
handler.postDelayed(drawRunner, refreshRate);
}
try {
canvas = holder.lockCanvas();
if (canvas != null) {
canvas.drawColor(backgroundColor);
}
} finally {
if (canvas != null)
try{
holder.unlockCanvasAndPost(canvas);
} catch (Exception e) {
e.printStackTrace();
}
}
}
...
}
draw() 方法用于将我的壁纸绘制到屏幕上,并在其中调用canvas.drawColor()。名为backgroundColor 的变量被初始化为颜色#01ffffff。那么有谁知道为什么会发生这种情况以及我能做些什么来解决这个问题?谢谢! (而代码中的任何语法错误,例如缺少括号,可能是由于我的复制和粘贴技能不佳。)
【问题讨论】:
-
颜色的alpha不是前两个数字吗?至少
Color.FromArgb()在 c# 中是这样工作的……那会给你一个蓝白色的吗?抱歉不熟悉javascript。那是javascript对吗? -
抱歉,这不是问题所在。我写的时候在想#rrggbbaa。在实际定义颜色的代码中,它首先使用 alpha 正确定义它。不过谢谢。它是 Java。