2016-10-19 1 views
0

J'ai cette fonction:Toile Android, comment puis-je faire un OnTouchEvent quand un bitmap est touché au lieu du plein écran?

@Override 
public boolean onTouchEvent(MotionEvent event1) 
{ 
    if(event1.getAction()==MotionEvent.ACTION_DOWN){ 
     if(!player.getPlaying() && newGameCreated && reset) 
     { 
      player.setPlaying(true); 
      player.setUp(true); 
     } 
     if(player.getPlaying()) 
     { 

      if(!started)started = true; 
      reset = false; 
      player.setUp(true); 
     } 
     return true; 
    } 
    if(event1.getAction()==MotionEvent.ACTION_UP) 
    { 
     player.setUp(false); 
     return true; 
    } 

    return super.onTouchEvent(event1); 
} 

Cette fonction fera en plein écran.
Mais comment puis-je le faire uniquement lorsque mon bitmap est touché?

+0

Vous pouvez également consulter [cette réponse] (http: //stackoverflow.com/questions/20569805/how-to-set-ontouch-listener-for-something-drawn-using-canvas-android) –

Répondre

1
float x = event1.getX(); 
float y = event1.getY(); 

if(rect.contains((int)x, (int)y)) 
{ 
    // touch in image 
} 
//where rect is rectangle of bitmap 
1

Vous pouvez implémenter la mise en page parent et la transmettre à votre vue (où vous avez lié votre canevas) en tant que mise en page enfant. Vous pouvez suivre comme ci-dessous:

1) Mettre en oeuvre événement touche de mise en page de parent

yourparentlayout.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       // this method will pass your parent touch to your canvas parent view 
       canvasparent.dispatchTouchEvent(event); 

       return true; 
      } 
     }); 

2) Mettre en oeuvre l'auditeur OnTouch à votre canvasparent

canvasparent.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       Rect viewRect = new Rect(); 
       yourimageview.getGlobalVisibleRect(viewRect); 
       if (!viewRect.contains((int) event.getRawX(), (int) event.getRawY())) { 
        Log.d("Touch : "," Touching Outside Of your canvasparent"); 
       }else{ 
        Log.d("Touch : ","Touching Inside Of your canvasparent"); 
       } 
       return false; 
      } 
     }); 
+0

Je suis nouveau dans le codage avec Java, donc je ne comprends pas. –

+0

Je n'utilise pas une imageview, im en utilisant un bitmap. –

+0

@JelleBotman: Ok, où as-tu lié ta toile? À l'intérieur d'une vue, n'est-ce Donc, considérons cette vue au lieu de l'image ici – Jai