Ich erstelle eine Spielautomat-Anwendung und dafür verwende ich RecycleView
als Schiene. Daher sind alle touch \ click \ scroll-Ereignisse für RecyclerView
deaktiviert.RecyclerView - Fling Stop nach Berührung deaktivieren
Und um "Spin" zu machen, habe ich RecyclerView.fling(...)
Methode verwendet, da es bessere Animation hat.
ABER scheinbar Fälschung aufhört, wenn ich die Recycleransicht berühre. Warum? Und wie kann ich das deaktivieren?
xml:
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_rail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/margin_4"
android:layout_marginStart="@dimen/margin_4"
android:layout_weight="1"
android:padding="@dimen/dp_16"/>
init von RecyclerView:
LinearLayoutManager mRailLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mRailsBinding.rvRail.setHasFixedSize(true);
new LinearSnapHelper().attachToRecyclerView(mRailsBinding.rvRail);
mRailsBinding.rvRail.setLayoutManager(mRailLayoutManager);
mRailsBinding.rvRail.addOnItemTouchListener(new RecyclerViewDisabler());
mRailsBinding.rvRail.addOnScrollListener(railScrollListener); //checking here for time when scroll ended
mRailsBinding.rvRail.setAdapter(mRailAdapter);
Adapter tut nichts Besonderes. Es ist nur in der Ansicht und hat keine Klick-Touch-Evenets auf ihnen.
RecyclerViewDisabler:
public class RecyclerViewDisabler implements RecyclerView.OnItemTouchListener {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
return true;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean state) {}
}