2013-08-22 13 views
15

私はリストビューをいくつかのテキストで持っています。私はスワイプアクションでイメージを表示したい(ほとんどGmailアプリのように)。たとえば、左から右にスワイプすると、リストアイテムが右に移動し、画像が左からスライドしています。私のリストアイテムはイメージの幅を超えて移動することはできません。スワイプが停止した後、リスト項目が開始位置に移動しています。どうすればそんなことができますか? exampleAndroid listview、スワイプからアクション

+0

あなたがこの問題を解決しましたか?私は似たようなことをしようとしています。 – egfconnor

+0

いいえ、十分に文書化された例が見つかりません – BoredT

+0

私自身が独自のソリューションを作成しました。私はすぐにそれを調達オープンし、後に応答します。それは少し異なりますが、あなたの使用に非常に適応可能でなければなりません。私はあなたのユースケースを組み込むことにそれを巻き込むことさえできるかもしれません。 – egfconnor

答えて

1

gesturedetectorのonFling()イベントを使用できます。モーションイベントポイントを指定し、ジェスチャーを識別し、左から右、右から左のようなアニメーションを使用してビューを読み込むことができることを使用してベロシティポイントをタッチします。

1

これだけのライブラリは見つかりませんでしたが、自分で作るのは難しくありません。ニックが指摘したようにandroid-swipetodismissを見て、SwipeDismissListViewTouchListener.javaを見てください。

まず、ListViewさんの子供のためにカスタムViewを作成する必要があります。 ImageViewには、テキストが含まれている別のViewが重複している必要があります。

次に、リスナーをListViewに追加します。 (あなたがジェスチャーを起動したとき)MotionEvent.ACTION_DOWNにあなたが例えば、タッチ座標を取ると、あなたが接触しているListViewのどの子計算:MotionEvent.ACTION_MOVEオン

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

あなたはXの違いを測定するには、あなたがタッチ点間の座標MotionEvent.ACTION_DOWNと現在の座標:

float deltaX = motionEvent.getRawX() - mDownX; 

をそれではあなたはImageViewが明らかにされるようにテキストが含まれViewを翻訳しています

mDownView.setTranslationX(deltaX); 

指を持ち上げると、mDownView .setTranslationX(0)に設定され、画像が再び覆われます。これは単なるガイドであり、カバーされていないいくつかの詳細がありますが、これで始めることができるはずです。

2

チェックアウトthis

ここでは、リストビューを右にスワイプして表示することができます。

スナップ:

enter image description here

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> 
関連する問題