【发布时间】:2016-02-09 10:27:31
【问题描述】:
如何判断用户是否点击了我的 ImageView 的某些区域?
我在设置 (x,y) 坐标边界以检测何时单击特定位图时遇到了一些困难。
例如,如果位图的位置是 (75,75),比如说。即左上角在这个点,那么如果用户在(X,Y)点触摸屏幕,那么简单的条件:
我在画布上绘制了 4 个图像位置,分别是 (75,75)、(645,75)、(1215,75) 和 (75,490)。
它无法确定我点击了什么,它总是给我消息,“mImaget”而不是其他消息。
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (x >= 75 && x < (75 + mImaget.getWidth())
&& y >= 75 && y < (75 + mImaget.getHeight())) {
Toast.makeText(getActivity(), "mImaget", Toast.LENGTH_SHORT).show();
Log.e("TOUCHED", "X: " + x + " Y: " + y + mImaget.getWidth() + "-" + mImaget.getHeight());
}
if (x >= 645 && x < (645 + mImageth.getWidth())
&& y >= 75 && y < (75 + mImageth.getHeight())) {
Toast.makeText(getActivity(), "mImageth", Toast.LENGTH_SHORT).show();
Log.e("TOUCHED", "X: " + x + " Y: " + y + mImageth.getWidth() + "-" + mImageth.getHeight());
}
if (x >= 1215 && x < (1215 + mImagef.getWidth())
&& y >= 75 && y < (75 + mImagef.getHeight())) {
Toast.makeText(getActivity(), "mImagef", Toast.LENGTH_SHORT).show();
Log.e("TOUCHED", "X: " + x + " Y: " + y + mImagef.getWidth() + "-" + mImagef.getHeight());
}
if (x >= 75 && x < (75 + mImageo.getWidth())
&& y >= 490 && y < (490 + mImageo.getHeight())) {
Toast.makeText(getActivity(), "mImageo", Toast.LENGTH_SHORT).show();
Log.e("TOUCHED", "X: " + x + " Y: " + y + mImageo.getWidth() + "-" + mImageo.getHeight());
}
return true;
}
return false;
}
谢谢你:)
【问题讨论】:
-
您是在画布上绘制位图还是在布局中设置?
-
是的,我把它画在画布上,然后像这样放在 imageview 中:imageview.setImageBitmap(mBackground);
-
你能在 imageview 对象上设置 setOnClick 或 setOnTouchListener() 吗?
-
是的,我做到了,但我的 x 和 y 的条件有问题我只是想确定我是否触摸了 4 位置的某些区域 :) 你能看一下我的问题吗谢谢。
-
I have 4 image position that i draw in canvas,你的绘图代码是多少(onDraw)?
标签: java android canvas bitmap ontouchlistener