ユーザーがスワイプしたときに、CardView の下にユーザー メニューを表示したい。しかし、スワイプ中にcardViewを途中で停止させたい。
MyItemTocuchHelper クラスを作成し、 onChildDraw() メソッドをオーバーライドしました。
public class MyItemTocuchHelper extends ItemTouchHelper.SimpleCallback {
.....
private int mWidth = 128; // this value is calculated, but let's say its 128
...
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
if (dX > mWidth) {
dX = mWidth;
}
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
}
@Override
public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) {
return 0.01f;
}
これが行うことは、スワイプアニメーションが特定のポイントで停止することです(これをやりたかったのです)。ただし、このビューをスワイプすると、スワイプ距離が自動的に画面幅に設定されます。つまり、スワイプして戻そうとすると、最初は dX = 1038.0 で onChildDraw() メソッドが呼び出され、スワイプを続けるとその値が減少します。したがって、dX が mWidth の値に達する前に、アニメーションは再生されません。dX; の値が mWidth の値まで減少する限り、アニメーションは再び開始されます。
たとえばswipedDXを特定の値に設定する方法はありますか? またはそれを回避する方法はありますか?私が望むのは、ユーザーがビューをスワイプし始めるとすぐにアニメーションを開始することです。
前もって感謝します