0

我是Andoird的新手。

就我而言,我有一个场景,当单击图像的某个部分时,它会触发 onclick 事件。我试图在触发 onTouch 时检测位置,它可以工作,但我认为这不是标准实现,那么这种情况下的最佳做法是什么?

谢谢。

这是如下代码:

imgView.setOnTouchListener((OnTouchListener) 新 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; 
}
4

3 回答 3

0

只需onClickListener()为您的 ImageView 实现。

实现 onClick 事件的最简单方法是在 XML 布局中包含android:onClickMe="methodName"<ImageView>在活动文件中定义该方法。

例如:

public void methodName(View v)
{
  ....
  ....

   // do whatever you want for click even ton imageview
}
于 2012-04-12T08:43:52.033 回答
0

尝试使用ImageButton

于 2012-04-12T09:14:38.203 回答
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);
}

希望这对您有所帮助。:)

于 2012-04-12T09:24:51.457 回答