Android listview, pase a la acción
Tengo listview con algún texto. Quiero mostrar imágenes en la acción de deslizar (casi como en la aplicación de Gmail). Por ejemplo, si deslizo de izquierda a derecha, mi elemento de lista se mueve hacia la derecha y la imagen se desliza desde la izquierda. Mi elemento de lista puede moverse a la derecha no más que el ancho de la imagen. Después de que el golpe se detiene, el elemento de la lista se mueve a la posición inicial. ¿Cómo podría hacer tal cosa?
- Cómo implementar Swipe en Android juego sin vista
- Disminuir la velocidad de View Pager en android
- Implementación de 47degree android-swipelistview para desplazar android ListViewItem
- Android ViewFlipper + Detector de gestos
- Deslizar entre las actividades de android
- Twitter para Android como menú rápido de desplazamiento rápido
- Android PagerView entre las actividades
- Cierre una actividad pasando de derecha a izquierda con una animación suave para ir a la segunda actividad
- Cómo desplazarse y desplazarse hasta el último en Appium
- No es posible establecer SwipeFlingAdapterView desde el adaptador de matriz
- ListView en la ficha de desplazamiento no se actualiza a menos que se reinicie
- Biblioteca avanzada de RecyclerView - ejemplos de código
- Android ListView Deslizar hacia la derecha y hacia la izquierda para aceptar y rechazar
echa un vistazo a esto .
Allí puede ver el deslizador de vista de lista a la derecha para mostrar las vistas.
Chasquido:
main_activity.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:swipe="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.fortysevendeg.swipelistview.SwipeListView android:id="@+id/example_swipe_lv_list" android:listSelector="#00000000" android:layout_width="fill_parent" android:layout_height="wrap_content" swipe:swipeFrontView="@+id/front" swipe:swipeBackView="@+id/back" swipe:swipeDrawableChecked="@drawable/choice_selected" swipe:swipeDrawableUnchecked="@drawable/choice_unselected" swipe:swipeCloseAllItemsWhenMoveList="true" swipe:swipeMode="both" /> </LinearLayout>
puede utilizar el evento onFling () de gesturedetector. le dará los puntos motionevent y los puntos de la velocidad del tacto usando que usted puede identificar el gesto y puede cargar una visión usando las animaciones como de izquierda a derecha y derecha a la izquierda.
No pude encontrar ninguna biblioteca que hace eso, pero no es difícil hacerlo por usted mismo. Como Nick señaló pagar una mirada a android-swipetodismiss , mira SwipeDismissListViewTouchListener.java .
En primer lugar, debe crear una View
personalizada para su hijo de ListView
. Necesitará un ImageView
que esté superpuesto por otra View
que contenga el texto.
A continuación, agregue un onTouch()
a su ListView
. En MotionEvent.ACTION_DOWN
(cuando inicia el gesto), toma las coordenadas táctiles y calcula qué niño en el ListView
estás tocando, por ejemplo:
int[] listViewCoords = new int[2]; mListView.getLocationOnScreen(listViewCoords); int x = (int) motionEvent.getRawX() - listViewCoords[0]; int y = (int) motionEvent.getRawY() - listViewCoords[1]; View child; for (int i = 0; i < childCount; i++) { child = mListView.getChildAt(i); child.getHitRect(rect); if (rect.contains(x, y)) { mDownView = child; break; } }
En MotionEvent.ACTION_MOVE
se mide la diferencia en coordenadas X entre el punto que tocó en MotionEvent.ACTION_DOWN
y la coordenada actual:
float deltaX = motionEvent.getRawX() - mDownX;
Así que usted ha traducido la View
que contiene el texto para que el ImageView
se revela:
mDownView.setTranslationX(deltaX);
Al levantar el dedo, sólo establece mDownView .setTranslationX(0)
y la imagen se cubre de nuevo. Esto es sólo una guía, hay algunos detalles que no están cubiertos, pero usted debe ser capaz de comenzar con esto.
- ejecutando runOnUiThread en una clase separada
- Nexus One / Android "La CPU puede estar vinculada" bug