2016-02-08 4 views
1

Как определить, нажал ли пользователь в определенных областях моего ImageView?Как определить, подключен ли пользователь к растровому изображению?

У меня немного сложность, устанавливая границы координат (x, y), чтобы определить, когда нажимается конкретное растровое изображение.

Например, если позиция растрового изображения (75,75), скажем. т.е. верхний левый угол в этой точке, тогда, если пользователь коснется экрана в точке (X, Y), тогда простое условие:

У меня есть 4 позиция изображения, которую я рисую в холсте, это (75,75), (645,75), (1215,75) и (75,490).

Он не смог определить, что я нажимаю, он всегда дает мне сообщение «mImaget», а не другие.

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    int x = (int) event.getX(); 
    int y = (int) event.getY(); 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 

      if (x >= 75 && x < (75 + mImaget.getWidth()) 
        && y >= 75 && y < (75 + mImaget.getHeight())) { 
       Toast.makeText(getActivity(), "mImaget", Toast.LENGTH_SHORT).show(); 
       Log.e("TOUCHED", "X: " + x + " Y: " + y + mImaget.getWidth() + "-" + mImaget.getHeight()); 
      } 

      if (x >= 645 && x < (645 + mImageth.getWidth()) 
        && y >= 75 && y < (75 + mImageth.getHeight())) { 
       Toast.makeText(getActivity(), "mImageth", Toast.LENGTH_SHORT).show(); 
       Log.e("TOUCHED", "X: " + x + " Y: " + y + mImageth.getWidth() + "-" + mImageth.getHeight()); 
      } 

      if (x >= 1215 && x < (1215 + mImagef.getWidth()) 
        && y >= 75 && y < (75 + mImagef.getHeight())) { 
       Toast.makeText(getActivity(), "mImagef", Toast.LENGTH_SHORT).show(); 
       Log.e("TOUCHED", "X: " + x + " Y: " + y + mImagef.getWidth() + "-" + mImagef.getHeight()); 
      } 

      if (x >= 75 && x < (75 + mImageo.getWidth()) 
        && y >= 490 && y < (490 + mImageo.getHeight())) { 
       Toast.makeText(getActivity(), "mImageo", Toast.LENGTH_SHORT).show(); 
       Log.e("TOUCHED", "X: " + x + " Y: " + y + mImageo.getWidth() + "-" + mImageo.getHeight()); 
      } 

      return true; 
    } 
    return false; 
} 

Thankyou :)

+0

Вы рисуете растровые изображения на холсте или устанавливаете в макетах? –

+0

Да, я рисую его в холсте и ставил его в виде изображения: imageview.setImageBitmap (mBackground); –

+0

Можете ли вы установить setOnClick или setOnTouchListener() на объект imageview? –

ответ

0
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    int x = (int) event.getX(); 
    int y = (int) event.getY(); 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 

      if (x >= 75 && x < (75 + mBack.getWidth()) 
        && y >= 75 && y < (75 + mBack.getHeight())) { 
       Toast.makeText(getActivity(), "Zone1: " + x +"-" + y, Toast.LENGTH_SHORT).show(); 
      } 

      if (x >= 645 && x < (645 + mBack.getWidth()) 
        && y >= 75 && y < (75 + mBack.getHeight())) { 
       Toast.makeText(getActivity(), "Zone2: " + x +"-" + y, Toast.LENGTH_SHORT).show(); 
      } 

      if (x >= 1215 && x < (1215 + mBack.getWidth()) 
        && y >= 75 && y < (75 + mBack.getHeight())) { 
       Toast.makeText(getActivity(), "Zone3: " + x +"-" + y, Toast.LENGTH_SHORT).show(); 
      } 

      if (x >= 75 && x < (75 + mBack.getWidth()) 
        && y >= 490 && y < (490 + mBack.getHeight())) { 
       Toast.makeText(getActivity(), "Zone4: " + x +"-" + y, Toast.LENGTH_SHORT).show(); 
      } 

      Log.d("TOUCHED", "X: " + x + " Y: " + y + mImaget.getWidth() + "-" + mImaget.getHeight()); 


      return true; 
    } 
    return false; 
} 

Не могли бы вы попробовать эту одну часть кода вместо вашего примера.

+0

Привет, извините, пожалуйста, мое редактирование. Это не было mBack. –

+0

тоже не работает, условие всегда идет в Zone1 –