2016-12-20 60 views
0

我有一個imageview兩個圖像是:帶有兩個圖像和兩個onClickListeners的ImageView?

Resources r = getResources(); 
    Drawable[] layers = new Drawable[2]; 
    layers[0] = r.getDrawable(R.drawable.image1); 
    layers[1] = r.getDrawable(R.drawable.image2); 
    LayerDrawable layerDrawable = new LayerDrawable(layers); 
    imageView.setImageDrawable(layerDrawable); 

現在,我想在這個imageView每個圖像上添加onClickListener。我該如何解決這個問題?而且它們不重疊。

謝謝。

---編輯---

現在

,在我來說,我有兩個三角形是這樣的:

Imageview with two images

,我想檢測上的三角形點擊底部左邊和右上角的三角形。

有什麼建議嗎?

+1

我有2個想法來解決它,第一個是有2 imageview的不同可繪製並設置onclicklistener爲每一個,其他的想法是使用setOnTouchListener用於圖像視圖,並且檢測其中用戶正在觸摸的cordinates。 – AndroidRuntimeException

+1

點擊監聽器被添加到整個視圖,而不是圖像。你可以檢測到你在視圖中點擊的位置,但是這需要搞亂數學,我猜你不想做 –

+0

你的第一個想法很簡單,易於實現 – Nithinlal

回答

0

請勿使用OnClickListener,請使用OnTouchListener。測量 觸摸事件的位置,並使用它來確定點擊發生的位置。

imageButton.setOnTouchListener(new OnTouchListener() { 
    long lastPress = 0L 
    final long CLICK_DURATION = 500L 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      lastPress = System.currrentTimeMillis(); 
      return true; 
     } if(event.getAction() == MotionEvent.ACTION_UP){ 

      //The time between pressing and releasing has to be below a 
      //certain treshold to be a valid click. 
      if (System.currentTimeMillis() - lastPress < CLICK_DURATION) { 
       int x = (int) event.getX(); 
       int y = (int) event.getY(); 

       // Determine which triangle got clicked and then execute 
       // the code that would go in an onClickListener. 
      } 
      return true; 
     } 
     return false; 
    } 
} 
+0

非常感謝! – blueman3399