8

Android ICS以上の通知に存在する「左から右に削除する」ジェスチャーを実装しようとしています。 私は自分のアプリケーションにリストビューを持っています。私はジェスチャー検出器を動作させています。 しかし、特定のリストアイテムを左から右にスワイプすると、アイテムは自分の指と一緒に動くようになります。特定のポイントを超えて指を動かすと、項目だけが削除されます。OnFling()メソッド私は現在これを達成していません。Android「削除するために左にスワイプ」、リスト項目のジェスチャー、ICSスタイル

アイテムを指で動かすためにOnFling()メソッドを変更するにはどうすればよいですか?

マイジェスチャーリスナクラスを使用すると、この種の機能を実装したい場合は、githubのでスニペットを却下するローマNurikのスワイプを見ている必要があり

class GestureListener extends SimpleOnGestureListener { 
     private static final int SWIPE_MIN_DISTANCE = 50; 
     private static final int SWIPE_MAX_OFF_PATH = 100; 
     private static final int SWIPE_THRESHOLD_VELOCITY = 25; 

     private MotionEvent mLastOnDownEvent = null; 

     @Override 
     public boolean onDown(MotionEvent e) { 
      mLastOnDownEvent = e; 
      return super.onDown(e); 
     } 

     @Override 
     public boolean onSingleTapUp(MotionEvent e) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getApplicationContext(), "On Single TAP up ", Toast.LENGTH_SHORT).show(); 
      return super.onSingleTapUp(e); 
     } 

     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
       float velocityY) { 
      if (e1 == null) { 
       e1 = mLastOnDownEvent; 
      } 
      if (e1 == null || e2 == null) { 
       return false; 
      } 

      float dX = e2.getX() - e1.getX(); 
      float dY = e1.getY() - e2.getY(); 

      if (Math.abs(dY) < SWIPE_MAX_OFF_PATH 
        && Math.abs(velocityX) >= SWIPE_THRESHOLD_VELOCITY 
        && Math.abs(dX) >= SWIPE_MIN_DISTANCE) { 
       if (dX > 0) { 
        int position = tasks.pointToPosition((int) e1.getX(), 
          (int) e1.getY()); 

        int _id = (int) tasks.getItemIdAtPosition(position); 
        databaseConnector.deleteContact(_id); 

        new DeleteRow(_id, contactAdapter, getApplicationContext()); 
       contactAdapter.notifyDataSetChanged(); 


        Toast.makeText(getApplicationContext(), 
          "Right Swipe" + _id, Toast.LENGTH_SHORT).show(); 
       } else { 

        Toast.makeText(getApplicationContext(), "Left Swipe", 
          Toast.LENGTH_SHORT).show(); 
       } 
       return true; 
      } 

      return false; 
     } 
+1

、あなたはローマNurikの実装で覗き見したい場合があります//プラス.google.com/113735310430199015092/posts/Fgo1p5uWZLuまたはNakeOldAndroidsを使用しているJake Whartonのバックポート:https://github.com/JakeWharton/SwipeToDismissNOA – CommonsWare

答えて

5

です。それはhereです。

+0

これが助けになりました。 Thanks – newbie

+0

Swipe-To-Dismiss(Tim Roes)の著者は、EnhancedListViewという新しいバージョンを公開しました:https://github.com/timroes/EnhancedListView。 Playストアからデモをダウンロードすることもできます。 – Samoht

+0

私は同じを使用していますが、リストビューの項目が滑らかに滑っていません。ユーザーが少し下にスワイプしてからスワイプが検出されない場合です。どんな助けもありがとうございます。前もって感謝します – Awadesh

2

最新のサポートライブラリを使用できる場合は、RecyclerViewには、ItemTouchHelperの形式でいくつかの組み込み機能があり、希望する動作を与える方法のonSwipedがあります。この非常に有用な答えに応じてRecyclerViewサポートライブラリのv22.2.0で起動をサポート

ます。https:あなたはまだ行っていない場合https://stackoverflow.com/a/30601554/1518546

関連する問題