onClickListener в Canvas - PullRequest
       1

onClickListener в Canvas

1 голос
/ 28 ноября 2011

Я разрабатываю приложение, у которого есть Изображения в качестве индекса при выборе конкретного изображения, которое начнется, но я не знаю, как установить onClickListener или onTouchListener в Canvas, вот мой код

public class DrawView extends View implements OnTouchListener {

LinearLayout mLayout;
Bitmap index;
Bitmap book;
Bitmap bird;
Bitmap game;
Bitmap mail;
Bitmap music;
Bitmap torch;
Paint paint;

public DrawView(Context context) {
    super(context);

    setFocusable(true);
    setFocusableInTouchMode(true);
    this.setOnTouchListener(this);

    index = BitmapFactory.decodeResource(getResources(), R.drawable.photo1);
    book = BitmapFactory.decodeResource(getResources(), R.drawable.book);
    game = BitmapFactory.decodeResource(getResources(), R.drawable.game);
    music = BitmapFactory.decodeResource(getResources(), R.drawable.music);
}

public void onDraw(Canvas canvas){
    paint = new Paint();
    Bitmap indexcanvas = Bitmap.createScaledBitmap(index, canvas.getWidth(),
                                                   canvas.getHeight(), true);
    canvas.drawBitmap(indexcanvas, 0, 0, paint);
    canvas.drawBitmap(book, 160, 100, paint);
    canvas.drawBitmap(game, 30, 10, paint);
    canvas.drawBitmap(music, 80, 50, paint);
} 

public boolean onTouch(View v, MotionEvent event) {
    return false;
}

Пожалуйста, если кто-нибудь знает, как добавить onClickListener для конкретного изображения, например. здесь, если я нажму на «Book», начнется bookActivity.

Ответы [ 3 ]

4 голосов
/ 28 ноября 2011

попробуйте что-то вроде этого:

public boolean onTouch(View v, MotionEvent event) {
   if((event.getX(0)>=160) && 
      (event.getY(0)>=100) && 
     ( event.getX(0)<=160+BOOK_IMG_WIDTH) && 
      (event.getY(0)<=100+BOOK_IMG_HEIGHT))
      {
          //book selected
      }
   return true;
}
0 голосов
/ 28 ноября 2011

Сохранение координат изображений в ArrayList. Установите OnClickListener в контексте, получите координаты точек, по которым щелкнули, найдите изображение в массиве и сделайте что-нибудь:)

0 голосов
/ 28 ноября 2011

Используйте ImageView вместо растрового изображения и добавьте его в свой макет:

book = new ImageView(context);
book.setImageResource(R.drawable.book);
book.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            /*...*/
        }
    };);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...