Es bastante simple lo que estoy haciendo, lo he hecho antes, pero ahora no está funcionando como esperaba. De todas formas Permítanme explicar brevemente lo que estoy tratando de hacer y lo que estoy recibiendo ::onTouch dando puntos de contacto extraños Android
Escenario :: Tengo un RelativeLayout
en el que se coloca un ImageView
, Ahora me puse la touchlistener
así: imageview.setOnTouchListener(this);
Se me ha pedido para anular la función onTouch(View v,MotionEvent event)
lo que hice ... y en el Action_Move
me da la x y y y añadirlos a la izquierda y márgenes superiores, de esta manera estoy moviendo mi imagen.
extraño problema: Mi ImageView
está en movimiento, pero con un movimiento muy notable, como si me estoy moviendo en la dirección correcta, ImageView
irán al lado derecho, pero en su camino se vuelve hacia el lado izquierdo para que se vea como imagen no es estable, está vibrando ... algo así ... Estoy dando el x y y que recibo durante log
... Espero que esto te dé 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, que podría explicar mi pregunta, aún si necesita algo, hágamelo saber.
actualización :: Código para mover el ImageView
en su Container es decir RelativeLayout
:
case MotionEvent.ACTION_MOVE:
LayoutParams params = (LayoutParams) imageview.getLayoutParams();
params.leftMargin = params.leftMargin + x;
params.topMargin = params.topMargin + y;
imageview.setLayoutParams(params);
break;
"cada acción de movimiento también disparará un OnTouchEvent levemente diferente causando otra acción de movimiento - esta recursión le da un efecto de" vibración ". Por favor, explíquelo un poco, un enlace/documentación sería muy útil donde se haya escrito en detalle ... – Farhan