したがって、基本的に、ビットマップが存在する場合は、最初にそれを描画し、ビュー/キャンバス全体に広げます。次に、その上にテキストと長方形を描画すると、うまく機能するはずです。右?
私は、これが「背景」(Being currentPicture) を描画し、その下に % と四角形を描画すると想定していました。
なぜそのように振る舞わないのだろうか?以前は機能していましたが、何かが変わり、現在は機能していません。
さらに、
canvas.drawRect(0, 0, width, 200, p);
描画しません。
同様の話:
canvas.drawRect(0, 100, width, 200, p);
どちらもif文にあります。最初のものは描かれるべきではないと思いますが、2番目のものは描かれるべきです。ビットマップは正しく描画されます。
ご不明な点がございましたら、お問い合わせください。
コード:
@Override
public void onDraw(Canvas canvas) {
int myColor = 0;
p.setColor(Color.TRANSPARENT);
canvas.drawRect(0, 0, width, height, p);
if (currentPicture != null) {
p.setColor(Color.RED);
canvas.drawRect(0, 0, width, 200, p);
canvas.drawBitmap(currentPicture, new Rect(0, 0, width, height), new Rect(0, 0, width, height), p);
canvas.translate(translateX, translateY);
canvas.scale(scaleX, scaleY);
pictureCanvas = canvas;
p.setColor(Color.GREEN);
canvas.drawRect(0, 100, width, 200, p);
}
if (ci >= 66) {
myColor = (Color.RED);
} else if (ci >= 33) {
myColor = (Color.YELLOW);
} else {
myColor = (Color.GREEN);
}
p.setColor(myColor);
// Progress bar stuff.
canvas.drawRect(0, height - 100, (progress * width / 20), height, p);
// backdrop for textview.
p.setColor(Color.BLACK);
canvas.drawText(ci + "%", -1, height - 19, p);
canvas.drawText(ci + "%", +1, height - 21, p);
// Draw CI.
p.setColor(myColor);
p.setTextSize(100);
canvas.drawText(ci + "%", 0, height - 20, p);
}