2016-12-20 6 views
0

У меня есть imageview с двумя изображениями в нем:ImageView с двумя изображениями и двумя onClickListeners?

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); 

Теперь, я хотел бы добавить onClickListener на каждом изображении в этом imageView. Как я могу это решить? Кроме того, они не перекрываются.

спасибо.

--- EDIT ---

Теперь, в моем случае, у меня есть два треугольника, как это:

Imageview with two images

, и я хотел бы, чтобы обнаружить, нажмите на треугольник в нижней части слева и верхний правый треугольник.

Любые предложения?

+1

У меня есть 2 идеи для ее решения, во-первых, есть 2 ImageView с различными Drawable и установить 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