android.support.design.widget.BottomSheetBehavior#BottomSheetCallback ( )源码实例Demo

下面列出了android.support.design.widget.BottomSheetBehavior#BottomSheetCallback ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

private void waitUntilBottomSheetDisplayed() {
    MaterialActivityChooserActivity activityChooserActivity = ActivityUtils.getCurrentActivity(mActivityRule);
    BottomSheetBehavior.BottomSheetCallback originalBottomSheetCallback = SuperReflect.on(activityChooserActivity).get("mBottomSheetCallback");
    if (!(originalBottomSheetCallback instanceof IdlingResourceBottomSheetCallback)) {
        final BottomSheetBehavior bottomSheetBehavior = SuperReflect.on(activityChooserActivity)
                .get("mBottomSheetBehavior");

        /* The bottom sheet gets opened with a delay (using Handler#postDelayed())
         * therefore we need to initially wait for the bottom sheet to get to the 'collapsed' state
         */
        await().until(new Callable<Boolean>() {
            @Override
            public Boolean call() throws Exception {
                return bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED;
            }
        });
        mIdlingResourceBottomSheetCallback = new IdlingResourceBottomSheetCallback(originalBottomSheetCallback, mBottomSheetIdlingResource);
        bottomSheetBehavior.setBottomSheetCallback(mIdlingResourceBottomSheetCallback);
    }
    onView(withId(R.id.mac_bottom_sheet)).check(matches(isDisplayed()));
}
 
/**
 * Set a {@link android.support.design.widget.BottomSheetBehavior.BottomSheetCallback} callback
 * to our behavior, as soon as it is available.
 *
 * @param bottomSheetCallback desired callback.
 */
public void setBottomSheetCallback(final BottomSheetBehavior.BottomSheetCallback bottomSheetCallback) {
    if (bottomSheetBehavior == null) {
        delayedBottomSheetCallback = bottomSheetCallback;
    } else {
        bottomSheetBehavior.setBottomSheetCallback(bottomSheetCallback);
    }
}
 
public void setBottomSheetCallback(BottomSheetBehavior.BottomSheetCallback callback) {
    mCallback = callback;
}
 
public IdlingResourceBottomSheetCallback(BottomSheetBehavior.BottomSheetCallback wrappedCallback, CountingIdlingResource mBottomSheetIdlingResource) {
    this.mWrappedCallback = wrappedCallback;
    this.mBottomSheetIdlingResource = mBottomSheetIdlingResource;
}