Android的listview,滑动到行动

我有一些文本的列表视图。 我想在滑动动作上显示图像(几乎像在Gmail应用程序中)。 例如,如果我从左向右滑动 – 我的列表项正在向右移动,并且图像从左侧滑动。 我的列表项目可以向右移动不超过图像宽度。 滑动停止后,列表项正在移动到开始位置。 我怎么能做出这样的事情? 例

Solutions Collecting From Web of "Android的listview,滑动到行动"

看看这个 。

在那里你可以看到列表视图向右滑动以显示视图。

快:

在这里输入图像说明

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> 

你可以使用gesturedetector的onFling()事件。 它会为您提供dynamic事件点和触摸速度点,您可以使用它来识别手势,并可以使用animation(如从左到右和从右到左)加载视图。

我找不到任何能够做到这一点的图书馆,但是自己做起来并不难。 正如Nick指出的,看看android-swipetodismiss ,看看SwipeDismissListViewTouchListener.java 。

首先,你必须为你的ListView的孩子创build一个自定义的View 。 您将需要一个ImageView ,它与另一个包含文本的View重叠。

然后,您将一个onTouch()侦听器添加到您的ListView 。 在MotionEvent.ACTION_DOWN (当你开始手势的时候)你需要使用触摸坐标来计算你正在触摸的ListView哪个子项,例如:

  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; } } 

MotionEvent.ACTION_MOVE ,测量在MotionEvent.ACTION_DOWN触摸的点与当前坐标之间的X坐标差异:

 float deltaX = motionEvent.getRawX() - mDownX; 

那么你已经翻译了包含文本的View ,这样ImageView就显示出来了:

 mDownView.setTranslationX(deltaX); 

当你抬起你的手指,你只需设置mDownView .setTranslationX(0) ,图像被覆盖。 这只是一个指导,有一些细节没有涉及,但你应该能够从这个开始。