Wait for layout before showing onboarding tap target.

This commit is contained in:
akwizgran
2021-04-19 10:01:48 +01:00
parent 2ddb7b5b64
commit 2d4e7a9fb0

View File

@@ -9,6 +9,7 @@ import android.view.LayoutInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.GridView; import android.widget.GridView;
import android.widget.ImageView; import android.widget.ImageView;
@@ -166,13 +167,21 @@ public class NavDrawerActivity extends BriarActivity implements
drawerLayout.addDrawerListener(drawerToggle); drawerLayout.addDrawerListener(drawerToggle);
navigation.setNavigationItemSelectedListener(this); navigation.setNavigationItemSelectedListener(this);
// Wait for the drawer to be laid out before trying to position the
// onboarding tap target
drawerLayout.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
drawerLayout.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
observeTransportsOnboarding();
}
});
initializeTransports(); initializeTransports();
transportsView.setAdapter(transportsAdapter); transportsView.setAdapter(transportsAdapter);
observeOnce(navDrawerViewModel.showTransportsOnboarding(), this, show ->
observeOnce(torIcon, this, imageView ->
showTransportsOnboarding(show, imageView)));
lockManager.isLockable().observe(this, this::setLockVisible); lockManager.isLockable().observe(this, this::setLockVisible);
if (lifecycleManager.getLifecycleState().isAfter(RUNNING)) { if (lifecycleManager.getLifecycleState().isAfter(RUNNING)) {
@@ -184,6 +193,16 @@ public class NavDrawerActivity extends BriarActivity implements
} }
} }
private void observeTransportsOnboarding() {
observeOnce(navDrawerViewModel.showTransportsOnboarding(), this,
show -> {
if (show) {
observeOnce(torIcon, this,
this::showTransportsOnboarding);
}
});
}
@Override @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
@@ -452,8 +471,7 @@ public class NavDrawerActivity extends BriarActivity implements
return transport; return transport;
} }
private void showTransportsOnboarding(boolean show, ImageView imageView) { private void showTransportsOnboarding(ImageView imageView) {
if (show) {
int color = resolveColorAttribute(this, R.attr.colorControlNormal); int color = resolveColorAttribute(this, R.attr.colorControlNormal);
Drawable drawable = VectorDrawableCompat Drawable drawable = VectorDrawableCompat
.create(getResources(), R.drawable.transport_tor, null); .create(getResources(), R.drawable.transport_tor, null);
@@ -468,7 +486,6 @@ public class NavDrawerActivity extends BriarActivity implements
.show(); .show();
navDrawerViewModel.transportsOnboardingShown(); navDrawerViewModel.transportsOnboardingShown();
} }
}
private static class Transport { private static class Transport {