如何知道哪个画布提取位图被触摸。

时间:2013-01-01 11:44:42

标签: android canvas

我在绘制扩展类的视图时绘制了两个Bitmap。如果我触摸任何位图,我想启动两个不同的活动。就像我触摸bitmap1它启动activity1,并触摸bitmap2它开始activity2.这是我做的,简而言之, 位图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);
    }

2 个答案:

答案 0 :(得分:0)

您不能使用onClick事件,因为它具有更高的抽象性。无论是否点击,您都没有太多信息。因此,您必须转到onTouchEvent并处理触摸事件,以查看是否发生了点击/点击,以及它发生在何处。触摸事件会在客户端坐标中指定其位置,因此它们将与您在(100,100)中绘制的(200,200)Canvas相对。因此,基本上您可以将触摸事件位置与Canvas中的信息进行匹配。

或者,如果您的真实用例与示例一样简单,则可以使用两个不同的View,每个Bitmap只保留一个setOnClickListener(),只需ImageView。您可以使用两个Draw直接从 XML 引用位图drawables ,而不是自己{{1}}。

答案 1 :(得分:0)

您无法在位图上设置onTouch事件。你现在有两种选择。

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

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

对于Ex :(只是提供一些提示的粗略代码)

if (x >= xOfYourBitmap && x < (xOfYourBitmap + yourBitmap.getWidth())
                && y >= yOfYourBitmap && y < (yOfYourBitmap + yourBitmap.getHeight())) {
        //you are inside your bitmap
}