2016-03-06 3 views
2

У меня есть класс Surfaceview под названием ChickenView, и я пытаюсь заставить mybMapEgg иметь touchhevent. Я попытался использовать этот bMapEgg.setOnTouchListener(this); , но это не сработало. Есть идеи?Surfaceview с растровым изображением touchhevent

public void drawCourt() { 

      if (ourHolder.getSurface().isValid()) { 
       canvas = ourHolder.lockCanvas(); 
       //Paint paint = new Paint(); 
       canvas.drawColor(Color.BLACK);//the background 
       paint.setColor(Color.argb(255, 255, 255, 255)); 
       paint.setTextSize(45); 
       canvas.drawText("Score:" + score + " Lives:" + lives + " fps:" + fps, 20, 40, paint); 

       Bitmap bMapEgg = BitmapFactory.decodeResource(getResources(), R.drawable.egg); 
       bMapEgg = scaleDown(bMapEgg,180,true); 

       Bitmap bMapBackground = BitmapFactory.decodeResource(getResources(), R.drawable.backgrounddd); 
       canvas.drawBitmap(bMapBackground, 0, 0, paint); 
       canvas.drawBitmap(bMapEgg, ballPosition.x, ballPosition.y, paint); 



       ourHolder.unlockCanvasAndPost(canvas); 
      } 

     } 
+0

Почему вы можете добавить слушателя касания в растровое изображение? События касания передаются в представления, например. ваш SurfaceView. Вам придется обрабатывать вычисление позиции, и если бы ваше растровое изображение было нажато –

ответ

0

Во-первых, вам необходимо настроить прослушиватель прикосновений для всего SurfaceView. Затем, чтобы проверить, было ли затронуто растровое изображение, вам нужно сделать что-то вроде этого:

float x = touchEvent.getX(); 
float y = touchEvent.gety(); 
// Replace these with the correct values (bitmap x, y, width & height) 
float x1 = bitmapPositionX; 
float x2 = x1 + bitmapWidth; 
float y1 = bitmapPositionY; 
float y2 = y1 + bitmapHeight; 
// Test to see if touch is inside the bitmap 
if (x > x1 && x < x2 && y > y1 && y < y2) { 
    // Bitmap was touched 
    switch (touchEvent.getAction()) { 
    case TouchEvent.ACTION_DOWN: (bitmap was just touched) break; 
    case TouchEvent.ACTION_DOWN: (user lifted finger from bitmap) break; 
    } 
} 
Смежные вопросы