在我的Android应用中,如何从他们的位置移动图像?

时间:2011-08-05 06:31:52

标签: android android-canvas

我有一个类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);

    }
 }

2 个答案:

答案 0 :(得分:1)

重写您的代码canvas.drawBitmap(Image1, x, y, null);

并编写一个帖子来随时间更改xy的值。

更改xy的值后,请在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;
        }
    }

 }