2013-01-05 2 views
0

J'essaye de faire ceci mais il m'a donné mal à la tête J'ai une vue qui dessine une barre de couleur. Et je veux permettre à l'utilisateur de se déplacer autour de (glisser-déposer)Touchez dans la vue seulement- android

c'est la méthode de tirage:

int r,g,b; 
     for(int i = 0; i < 64; i++) 
     {  
      r = Math.round((float)colorBuffer[i][0]*MAX_SCALING); 
      g = Math.round((float)colorBuffer[i][1]*MAX_SCALING); 
      b = Math.round((float)colorBuffer[i][2]*MAX_SCALING); 
      paint.setColor(Color.argb(MAX_SCALING, r, g, b)); 

      canvas.drawLine(x1, y1, x2, y1, paint); 
      y1+=3; 
     } 

rgb est juste la couleur.

Ceci est mon implémentation d'ontouch.

 public boolean onTouchEvent(MotionEvent e) 
     { 
      float x = e.getX(); 
      float y = e.getY(); 

      switch (e.getAction()) 
      { 
       case MotionEvent.ACTION_DOWN: 
       { 
        Toast t = Toast.makeText(getContext(), "Touch", Toast.LENGTH_SHORT); 
        t.show(); 
        break; 
       } 
       case MotionEvent.ACTION_MOVE: 
       { 
        x1=(int) x; 
        x2=(int) (x+30); 
        y1=(int) y; 
        break; 
       } 
       case MotionEvent.ACTION_UP: 
       { 
        Toast t = Toast.makeText(getContext(), "Release", Toast.LENGTH_SHORT); 
        t.show(); 
        x1=(int) x; 
        x2=(int) (x+30); 
        y1=(int) y; 
        break; 
       } 

      } 
      invalidate(); 
      return true; 



} 

Cela fonctionne parfaitement bien, mais le problème est que cela fonctionne même en dehors de la vue. donc si je touche outsite la vue ma barre se déplacer là-bas aussi même lorsque je clique sur un bouton ma barre essayer de passer trop je veux faire glisser et déposer le composant uniquement si le contact utilisateur dans la vue

toute aide serait d'apprécier merci

Répondre

0

Au toucher obtenir les x, y, la largeur et la hauteur de votre vue. Ensuite, chaque fois que vous déplacez la barre, si je comprends bien dans MotionEvent.ACTION_MOVE, vérifiez si les coordonnées actuelles sont dans les limites des vues, si cela est vrai, alors permettez de déplacer la barre.

Questions connexes