come get una vista da una coordinate di events in android?

Voglio intercettare gli events di touch sulla mia vista padre con onInterceptTouchEvent (MotionEvent ev) .

Da lì voglio sapere quale vista è stata cliccata per fare altre cose, c'è un modo per sapere quale vista è stata cliccata da quel evento di movimento ricevuto?

  • super.onCreate (savedInstanceState);
  • Come includere millisecondi in una string di date formattata?
  • Disegno del materiale non window di dialogo di allarme
  • Come aggiungere dynamicmente edittext a android
  • Ottieni le posizioni di Tower Cell - Android
  • Come eliminare i dati firebase dopo i giorni "n"
  • org.ksoap2.serialization.SoapSerializationEnvelope
  • Come select e deselect un marker nelle mappe di Google in android?
  • Ottenere informazioni sulle intestazioni con RXJava e Retrofit
  • Come posso submit le coordinate di posizione GPS e di networking a un server (IP statico)?
  • Quali algoritmi di fusione di colore vengono usati per scurire un colore?
  • ConnectManager getNetworkInfo (int) deprecato
  • 3 Solutions collect form web for “come get una vista da una coordinate di events in android?”

    Beh, chiunque voglia sapere cosa ho fatto … non posso. Ho fatto una soluzione per sapere se la mia specifica componente di visualizzazione è stata cliccata, quindi ho potuto finire solo con questo:

      if(isPointInsideView(ev.getRawX(), ev.getRawY(), myViewComponent)){ doSomething() } 

    e il metodo:

     /** * Determines if given points are inside view * @param x - x coordinate of point * @param y - y coordinate of point * @param view - view object to compare * @return true if the points are within view bounds, false otherwise */ public static boolean isPointInsideView(float x, float y, View view){ int location[] = new int[2]; view.getLocationOnScreen(location); int viewX = location[0]; int viewY = location[1]; //point is inside view bounds if(( x > viewX && x < (viewX + view.getWidth())) && ( y > viewY && y < (viewY + view.getHeight()))){ return true; } else { return false; } } 

    Tuttavia questo funziona solo per le viste conosciute nel layout che è ansible passare come parametro, ancora non riesco a visualizzare la vista cliccando solo con le coordinate. Puoi cercare però tutte le viste nel layout.

    Un modo semplice per get la vista toccata è impostare un OnTouchListener nelle singole viste e memorizzare la visualizzazione in una variabile di class dell'attività. Restituendo false, l'evento di input sarà disponibile per il metodo onTouchEvent () dell'attività, in cui è ansible gestire facilmente tutti gli events touch (anche quelli della vista principale).

     myView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { touchedView = myView; return false; } }); @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: if(touchedView!=null) { doStuffWithMyView(touchedView); .... .... 

    Solo per rendere più semplice il metodo di htafoya :

     /** * Determines if given points are inside view * @param x - x coordinate of point * @param y - y coordinate of point * @param view - view object to compare * @return true if the points are within view bounds, false otherwise */ private boolean isPointInsideView(float x, float y, View view) { int location[] = new int[2]; view.getLocationOnScreen(location); int viewX = location[0]; int viewY = location[1]; // point is inside view bounds return ((x > viewX && x < (viewX + view.getWidth())) && (y > viewY && y < (viewY + view.getHeight()))); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.