单击Android Canvas中的位图

时间:2011-05-07 16:56:36

标签: android canvas bitmap

设置(x,y)坐标边界以检测特定位图是否被点击时,我遇到了一些困难。

例如,如果位图的位置是(100,300),那么。即左上角就在这一点,然后如果用户在点(X,Y)触摸屏幕,那么简单的条件:

if((Math.abs(X-midX)<bitmap.getWidth()/2)&&
           Math.abs(Y-midY)<bitmap.getHeight()<bitmap.getHeight()/2){

                  //the bitmap has been clicked on
}

其中midX定义为(100+(100 + bitmap.getWidth()))/ 2,即中间x点和midY的类似定义。

这是一种正确的方法吗?因为当我尝试触摸/点击它们时,我的某些位图的行为并不像我期望的那样。

3 个答案:

答案 0 :(得分:0)

如果位图位于ImageView,您应该能够处理视图的OnClickListener,以了解何时选择了位图。

答案 1 :(得分:0)

虽然我喜欢做这种数学,但这次我建议采用'简单方法'。使用图像边界设置Rect / RectF,然后使用rectF.contains(float x, float y)rect.contains(int x, int y)。也就是说,如果onClick不是一个选项,当然。

答案 2 :(得分:0)

另一种方法是将Bitmap放在Drawable中并用它来测试边界:

public boolean onSingleTap(MotionEvent event)
{
   int x = (int) event.getX();
   int y = (int) event.getY();

   if (drawable.getBounds().contains(x, y))
   {
      // You’ve tapped the Bitmap...
   }
}