2017-02-02 2 views
0

Dans une activité en utilisantAndroid: comment puis-je détecter lorsque l'utilisateur touche à gauche 20% de la zone de vue?

public boolean dispatchTouchEvent(MotionEvent ev)

comment puis-je savoir un utilisateur est en contact avec l'axe Y gauche de la zone de bord de 20%?

Il doit être générique et orienté. Je ne veux pas créer de vue cachée là-dessus. merci.

+1

obtenir x et y de toucher et de comparer avec 20% des écrans x et y. –

+0

@DayDayHappy pouvez-vous montrer de la couleur sur cette zone spécifique juste pour effacer ce gauche 20% de la zone d'affichage? –

Répondre

1
  • Get dispositif largeur
  • Calcul gauche taille de largeur de 20% (de 0 à X)
  • utilisation event.getX()
  • Vérifiez que event.getX() est périphérique à l'intérieur de 20%

enter image description here

exemple:

public class YourActivity extends Activity { 

     private LinearLayout background; 
     private float xValue, yValue, leftPersentage; 
     private int height,width; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_home); 

      DisplayMetrics displaymetrics = new DisplayMetrics(); 
      getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
      height = displaymetrics.heightPixels; 
      width = displaymetrics.widthPixels; 

      leftPersentage = (width)*20/100; 

      background = (LinearLayout) findViewById(R.id.background); 
      background.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        xValue = event.getX(); 
        yValue = event.getY(); 
        Log.d("Values Clicked" , xValue +"and" + yValue); 
        if(xValue <= leftPersentage){ 
         // perform your task 
         Log.d("Values Clicked onLeft" , xValue +"and" + yValue); 
        } 

        return false; 
       } 
      }); 
     } 
    } 
+1

merveilleuse réponse. tu lis dans mes pensées. merci beaucoup – DayDayHappy

+0

@DayDayHappy heureux que je puisse vous aider :)) –

1

Obtenez la taille d'affichage puis obtenez le point de l'événement tactile. Comparez-le mathématiquement pour savoir s'il en reste 20% ou non.

get taille d'affichage

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();  
float dpHeight = displayMetrics.heightPixels/displayMetrics.density; 
float dpWidth = displayMetrics.widthPixels/displayMetrics.density; 

obtenir les points de contact.

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    float touchedX = ev.getX(); 
    float touchedY = ev.getY(); 
    return super.dispatchTouchEvent(ev); 
}