我有一个类Panel,它覆盖了onDraw()方法,如下所示。我在canvas.drawBitmap()中提到了两个图像,截至目前它们的位置是固定的。我可以在模拟器上从底部到顶部移动这两个图像吗?代码是:
class Panel extends View {
public Panel(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
Bitmap image1 = BitmapFactory.decodeResource(getResources(), R.drawable.btnpre);
canvas.drawColor(Color.CYAN);
canvas.drawBitmap(Image1, 10, 10, null);
Bitmap Image2 = BitmapFactory.decodeResource(getResources(), R.drawable.btnpre);
canvas.drawBitmap(Image2, 100, 100, null);
}
}
答案 0 :(得分:1)
重写您的代码canvas.drawBitmap(Image1, x, y, null);
。
并编写一个帖子来随时间更改x
或y
的值。
更改x
或y
的值后,请在Panel.java中调用invalidate
重绘视图。
答案 1 :(得分:0)
在onDraw调用中使用变量来获取要绘制的x,y的值。我修改了你的代码,在第一次绘制调用10秒后重绘为新坐标。它将为您提供在draw调用中使用变量来动态更改绘制位置的想法。希望我已经回答了你的问题
class Panel extends View {
public Panel(Context context) {
super(context);
}
Handler handler = new Handler() {
public void handleMessage(Message msg) {
x1 = 20;
y1 = 20;
x2 = 120;
y2 = 120;
invalidate();
}
}
private int x1 = 10;
private int y1 = 10;
private int x2 = 100;
private int y2 = 100;
private boolean drawAfterTenSecs = false;
@Override
public void onDraw(Canvas canvas) {
Bitmap image1 = BitmapFactory.decodeResource(getResources(), R.drawable.btnpre);
canvas.drawColor(Color.CYAN);
canvas.drawBitmap(Image1, x1, y1, null);
Bitmap Image2 = BitmapFactory.decodeResource(getResources(), R.drawable.btnpre);
canvas.drawBitmap(Image2, x2, y2, null);
if(!drawAfterTenSecs) {
handler.sendEmptyMessageDelayed (-1, 10000)
drawAfterTenSecs = true;
}
}
}