2012-04-12 49 views
0

我是Andoird的新手。ImageView點擊最佳做法

就我而言,我有一個場景,當點擊圖片的某個部分時,它會觸發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; 
} 
+0

你能告訴我們你的實現,所以我們可以知道它是否或它不是一個標準的實現或者如果有一個最佳實踐? – Th0rndike 2012-04-12 08:40:18

+0

我修改了我的答案。 :)也許你可以嘗試使用Rect來定義自定義檢測區域並調用contains()來檢查觸點是否在區域內。 – Chickenrice 2012-04-13 04:19:07

回答

0

嘗試使用ImageButton

+0

這個,這真的很有幫助...下面的鏈接可能是一個更好的方法... [link](http://stackoverflow.com/questions/10137657/onclicklistener-issues-after-imagebutton-moved-after-translateanimation) – SICON 2012-04-16 02:43:16

0

簡單地實現onClickListener()您的ImageView實現onClick事件

最簡單的方法是。在XML佈局中包含android:onClickMe="methodName"<ImageView>之內,並在您的活動文件中定義該方法。

例如:

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

    // do whatever you want for click even ton imageview 
} 
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); 
} 

希望這會對你有所幫助。 :)