package com.liyu.fakeweather.utils;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.View;
import rx.Observable;
import rx.Subscriber;
import rx.android.MainThreadSubscription;
public class RxDrawer {
private static final float OFFSET_THRESHOLD = 0.03f;
public static Observable<Void> close(final DrawerLayout drawer) {
return Observable.create(new Observable.OnSubscribe<Void>() {
@Override
public void call(final Subscriber<? super Void> subscriber) {
drawer.closeDrawer(GravityCompat.START);
final DrawerLayout.DrawerListener listener = new DrawerLayout.SimpleDrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
if (slideOffset < OFFSET_THRESHOLD) {
subscriber.onNext(null);
subscriber.onCompleted();
}
}
};
drawer.addDrawerListener(listener);
subscriber.add(new MainThreadSubscription() {
@Override
protected void onUnsubscribe() {
drawer.removeDrawerListener(listener);
}
});
}
});
}
}