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