Use the reactive RxJava API
RxJava2.xTo detect swipe events using RxJava, follow these steps:
- Declare a
Swipeinstance and aDisposablein yourActivity. - Initialize
Swipeand subscribe to itsobserve()method. The observable emitsSwipeEventenum values. - Override
dispatchTouchEvent(MotionEvent event)to pass touch events to theSwipeinstance. - Dispose of the
DisposableinonPause()to prevent memory leaks.
Available SwipeEvent values:
SWIPING_LEFT/SWIPED_LEFTSWIPING_RIGHT/SWIPED_RIGHTSWIPING_UP/SWIPED_UPSWIPING_DOWN/SWIPED_DOWN
// Step 1: Declare
private Swipe swipe;
private Disposable disposable;
// Step 2: Initialize and subscribe
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
swipe = new Swipe();
disposable = swipe.observe()
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(swipeEvent -> info.setText(swipeEvent.toString()));
}
// Step 3: Pass events
@Override public boolean dispatchTouchEvent(MotionEvent event) {
swipe.dispatchTouchEvent(event);
return super.dispatchTouchEvent(event);
}
// Step 4: Dispose
@Override protected void onPause() {
super.onPause();
if (disposable != null && !disposable.isDisposed()) {
disposable.dispose();
}
}