0

我在视图扩展类的 ondraw 中绘制了两个位图。如果我触摸任何位图,我想启动两个不同的活动。就像我触摸 bitmap1 时它会启动 activity1,而在触摸 bitmap2 时它会启动 activity2。简而言之,这就是我所做的,Bitmap bimap1,bitmap2;

protected void onDraw(Canvas canvas) 
    {

        Paint paint = new Paint(); 
        paint.setStyle(Paint.Style.FILL); 
        paint.setColor(Color.YELLOW);

            canvas.drawBitmap(bitmap2, 100, 100, paint);
                        canvas.drawBitmap(bitmap2, 200, 200, paint);




        super.onDraw(canvas);
    }
4

2 回答 2

0

您不能onTouch在位图上设置事件。你现在有两个选择。

1)在两个单独的视图中使用两个单独的画布并onTouch在它们上绑定事件。

或者

2)获取位图的坐标,并从该坐标中决定选择哪个位图。

例如:(只是一个粗略的代码有一些提示)

if (x >= xOfYourBitmap && x < (xOfYourBitmap + yourBitmap.getWidth())
                && y >= yOfYourBitmap && y < (yOfYourBitmap + yourBitmap.getHeight())) {
        //you are inside your bitmap
} 
于 2013-01-01T12:17:03.327 回答
0

您不能onClick为此使用事件,因为它是更高的抽象。你要么被点击,要么没有,你没有太多信息。所以你将不得不去onTouchEvent处理触摸事件,看看是否发生了点击/点击,以及它发生在哪里。触摸事件指定其在客户端坐标中的位置,因此它们将相对于(100,100)(200,200)用于在Canvas. 所以基本上你可以将触摸事件位置与Canvas.

或者,如果您的实际用例与您的示例一样简单,您可以使用两个不同View的 s,每个都持有一个Bitmap,并且每个都简单setOnClickListener()。您可以使用两个ImageViews 并直接从XML中引用位图可绘制对象,而不是自己创建它们。Draw

于 2013-01-01T12:12:26.120 回答