设置(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的类似定义。
这是一种正确的方法吗?因为当我尝试触摸/点击它们时,我的某些位图的行为并不像我期望的那样。
答案 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...
}
}