我在绘制扩展类的视图时绘制了两个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);
}
答案 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
}