OnTouch dando extraños puntos de contacto Android

Su cosa bastante simple que estoy haciendo, lo he hecho antes, pero ahora no está funcionando como esperaba. De todos modos Permítanme explicar brevemente lo que estoy tratando de hacer y lo que estoy recibiendo ::

Escenario :: Tengo un RelativeLayout en el que se coloca un ImageView , Ahora establezco el touchlistener como: imageview.setOnTouchListener(this);

Me pidió que anulara la función onTouch(View v,MotionEvent event) que hice … y en Action_Move consigo las xyy las agrego a los márgenes izquierdo y superior, de esta manera estoy moviendo mi imagen.

Problema extraño: Mi ImageView está moviendo pero con un movimiento muy visible, como si me muevo en la dirección correcta, ImageView irá al lado derecho pero en su camino vuelve al lado izquierdo para que se ve como la imagen no es estable, su Vibrando .. algo así .. Estoy dando la xyy que obtengo durante el log … espero que esto te da la idea.

 ACTION_DOWN[#0(pid 0)=160,233] Going right.. ACTION_MOVE[#0(pid 0)=160,233] //// ACTION_MOVE[#0(pid 0)=160,233] // ACTION_MOVE[#0(pid 0)=174,231] // ACTION_MOVE[#0(pid 0)=176,233] // ACTION_MOVE[#0(pid 0)=196,232] // ACTION_MOVE[#0(pid 0)=152,232] // suddenly i got 152 as location for x... image comes back ACTION_MOVE[#0(pid 0)=167,232] // again started to go right ACTION_MOVE[#0(pid 0)=180,233] // going right ACTION_MOVE[#0(pid 0)=173,233] // again comes a little back ACTION_MOVE[#0(pid 0)=187,232] // same thing goes till end.. ACTION_MOVE[#0(pid 0)=159,232] ACTION_MOVE[#0(pid 0)=174,231] ACTION_MOVE[#0(pid 0)=177,233] ACTION_MOVE[#0(pid 0)=189,231] ACTION_MOVE[#0(pid 0)=155,232] ACTION_MOVE[#0(pid 0)=171,231] ACTION_MOVE[#0(pid 0)=183,230] ACTION_MOVE[#0(pid 0)=161,234] ACTION_MOVE[#0(pid 0)=171,233] ACTION_MOVE[#0(pid 0)=174,230] ACTION_MOVE[#0(pid 0)=183,230] ACTION_MOVE[#0(pid 0)=162,234] ACTION_MOVE[#0(pid 0)=170,233] ACTION_MOVE[#0(pid 0)=176,233] ACTION_MOVE[#0(pid 0)=165,233] ACTION_MOVE[#0(pid 0)=175,232] ACTION_MOVE[#0(pid 0)=163,233] ACTION_MOVE[#0(pid 0)=171,233] ACTION_MOVE[#0(pid 0)=167,233] ACTION_MOVE[#0(pid 0)=172,232] ACTION_MOVE[#0(pid 0)=178,232] ACTION_MOVE[#0(pid 0)=158,234] ACTION_MOVE[#0(pid 0)=170,234] ACTION_MOVE[#0(pid 0)=170,232] ACTION_MOVE[#0(pid 0)=177,231] ACTION_MOVE[#0(pid 0)=157,234] ACTION_MOVE[#0(pid 0)=160,234] ACTION_MOVE[#0(pid 0)=169,232] ACTION_MOVE[#0(pid 0)=165,233] ACTION_MOVE[#0(pid 0)=167,233] ACTION_MOVE[#0(pid 0)=159,233] ACTION_UP [#0(pid 0)=161,233] 

Código XML para RelativeLayout:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#99000000"> <ImageView android:id="@+id/imageview" android:layout_width="400dp" android:layout_height="400dp" android:layout_marginLeft="100dp" android:layout_marginTop="100dp" android:scaleType="matrix" /> </RelativeLayout> 

Por lo tanto, este es el máximo, podría explicar mi pregunta, aún si usted necesita algo, hágamelo saber.

Actualización :: Código para mover el ImageView en su Contenedor ie RelativeLayout :

 case MotionEvent.ACTION_MOVE: LayoutParams params = (LayoutParams) imageview.getLayoutParams(); params.leftMargin = params.leftMargin + x; params.topMargin = params.topMargin + y; imageview.setLayoutParams(params); break; 

Las variables X e Y en onTouch son las X e Y relativas a la Vista que tiene el onTouchListener conectado. Así que 10, 10 sería de la parte superior izquierda de su ImageView no de RelativeLayout .

Si utiliza estos valores para mover su ImageView , obtendrá un comportamiento inestable, cada acción de movimiento también disparará un OnTouchEvent ligeramente diferente que causa otra acción de movimiento. Esta recursión le da un efecto "vibrante".

Cuando obtuve la coordinación Y por el método event.getRawY() lugar de event.getY() para mover una vista, el comportamiento tembloroso desaparece. Así que si usted ha utilizado el método getY() , trate de cambiarlo.

  • ¿Puedo configurar "android: layout_below" en tiempo de ejecución, de forma programática?
  • ImageView no se extiende (Android)?
  • Cambiar mediante programación RelativeLayout toRightOf to toLeftOf
  • Android RelativeLayout: cómo colocar una vista debajo de otra vista cuando ambas no están en el mismo contenedor
  • Archivo de diseño - Posicionamiento de un elemento a la derecha de otro elemento (Android)
  • Android: onClickListener para relativelayout
  • Añadir dinámicamente una vista al diseño de la actividad
  • Agregar elementos a un diseño relativo de forma programática
  • Android GLSurfaceView fondo transparente sin setZOrderonTop
  • RelativeLayout dentro de LinearLayout?
  • Alineación de vistas en tiempo de ejecución en RelativeLayout
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.