我是Andoird的新手。
在我的情况下,我有一个场景,当点击图像的某个部分时,它将触发onclick事件。我试图在onTouch被触发时检测到它的位置,它有效,但我认为它不是一个标准的实现,那么这种情况的最佳做法是什么?
感谢。
这里的代码如下:
imgView.setOnTouchListener((OnTouchListener)new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
if(isIn(event.getX(), event.getY(), 124,3,221,36)){
ShowMemberInfo(R.string.app_m01);
} else if(isIn(event.getX(), event.getY(), 8,155,72,181)){
..
}
return true;
}
private boolean isIn(float x, float y, int fx, int fy, int tx, int ty) {
return x<tx && x > fx && y<ty && y>fy;
}
答案 0 :(得分:0)
只需为您的ImageView实施onClickListener()
。
实施onClick事件的最简单方法是在XML布局中的android:onClickMe="methodName"
中包含 <ImageView>
,并在活动文件中定义该方法。
例如:
public void methodName(View v)
{
....
....
// do whatever you want for click even ton imageview
}
答案 1 :(得分:0)
尝试使用ImageButton
答案 2 :(得分:0)
如果要检测用户触摸的位置(相对于触摸的ImageView用户),可以从MotionEvent对象获取触摸点。
尝试为ImageView注册触摸事件侦听器,并在触发触摸事件时从MotionEvent对象的getX()和getY()方法获取触摸点位置。然后定义一个矩形区域并使用contains()来检查触摸点是否在区域内。
ImageView img = new ImageView(this);
img.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.w("Hit test", "is hit? "+isIn(event.getX(),event.getY(),0,0,120,120));
return false;
}
});
private boolean isIn(float x, float y, int fx, int fy, int tx, int ty){
return new Rect(fx,fy,tx,ty).contains((int)x,(int)y);
}
希望这会对你有所帮助。 :)