Search in sources :

Example 1 with EmptyActivityLifecycleCallbacks

use of com.jakewharton.u2020.util.EmptyActivityLifecycleCallbacks in project u2020 by JakeWharton.

the class DebugViewContainer method forActivity.

@Override
public ViewGroup forActivity(final Activity activity) {
    activity.setContentView(R.layout.debug_activity_frame);
    final ViewHolder viewHolder = new ViewHolder();
    ButterKnife.bind(viewHolder, activity);
    final Context drawerContext = new ContextThemeWrapper(activity, R.style.Theme_U2020_Debug);
    final DebugView debugView = new DebugView(drawerContext);
    viewHolder.debugDrawer.addView(debugView);
    // Set up the contextual actions to watch views coming in and out of the content area.
    ContextualDebugActions contextualActions = debugView.getContextualDebugActions();
    contextualActions.setActionClickListener(v -> viewHolder.drawerLayout.closeDrawers());
    viewHolder.content.setOnHierarchyChangeListener(HierarchyTreeChangeListener.wrap(contextualActions));
    viewHolder.drawerLayout.setDrawerShadow(R.drawable.debug_drawer_shadow, GravityCompat.END);
    viewHolder.drawerLayout.setDrawerListener(new DebugDrawerLayout.SimpleDrawerListener() {

        @Override
        public void onDrawerOpened(View drawerView) {
            debugView.onDrawerOpened();
        }
    });
    // Clean up any old screenshots.
    TelescopeLayout.cleanUp(activity);
    viewHolder.telescopeLayout.setLens(new BugReportLens(activity, lumberYard));
    // If you have not seen the debug drawer before, show it with a message
    if (!seenDebugDrawer.get()) {
        viewHolder.drawerLayout.postDelayed(() -> {
            viewHolder.drawerLayout.openDrawer(GravityCompat.END);
            Toast.makeText(drawerContext, R.string.debug_drawer_welcome, Toast.LENGTH_LONG).show();
        }, 1000);
        seenDebugDrawer.set(true);
    }
    final CompositeSubscription subscriptions = new CompositeSubscription();
    setupMadge(viewHolder, subscriptions);
    setupScalpel(viewHolder, subscriptions);
    final Application app = activity.getApplication();
    app.registerActivityLifecycleCallbacks(new EmptyActivityLifecycleCallbacks() {

        @Override
        public void onActivityDestroyed(Activity lifecycleActivity) {
            if (lifecycleActivity == activity) {
                subscriptions.unsubscribe();
                app.unregisterActivityLifecycleCallbacks(this);
            }
        }
    });
    riseAndShine(activity);
    return viewHolder.content;
}
Also used : Context(android.content.Context) EmptyActivityLifecycleCallbacks(com.jakewharton.u2020.util.EmptyActivityLifecycleCallbacks) Activity(android.app.Activity) BindView(butterknife.BindView) View(android.view.View) BugReportLens(com.jakewharton.u2020.ui.bugreport.BugReportLens) ContextThemeWrapper(android.view.ContextThemeWrapper) CompositeSubscription(rx.subscriptions.CompositeSubscription) Application(android.app.Application)

Aggregations

Activity (android.app.Activity)1 Application (android.app.Application)1 Context (android.content.Context)1 ContextThemeWrapper (android.view.ContextThemeWrapper)1 View (android.view.View)1 BindView (butterknife.BindView)1 BugReportLens (com.jakewharton.u2020.ui.bugreport.BugReportLens)1 EmptyActivityLifecycleCallbacks (com.jakewharton.u2020.util.EmptyActivityLifecycleCallbacks)1 CompositeSubscription (rx.subscriptions.CompositeSubscription)1