diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java index 6c165134d..8b5a15be2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java @@ -67,6 +67,10 @@ public class ImageActivity extends BriarActivity final static String NAME = "name"; final static String DATE = "date"; + @RequiresApi(api = 16) + private final static int UI_FLAGS_DEFAULT = + SYSTEM_UI_FLAG_LAYOUT_STABLE | SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; + @Inject ViewModelProvider.Factory viewModelFactory; @@ -138,9 +142,7 @@ public class ImageActivity extends BriarActivity if (SDK_INT >= 16) { viewModel.getOnImageClicked().observe(this, this::onImageClicked); - window.getDecorView().setSystemUiVisibility( - SYSTEM_UI_FLAG_LAYOUT_STABLE | - SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + window.getDecorView().setSystemUiVisibility(UI_FLAGS_DEFAULT); } } @@ -206,9 +208,16 @@ public class ImageActivity extends BriarActivity @Override public void onPullComplete() { + showStatusBarBeforeFinishing(); supportFinishAfterTransition(); } + @Override + public void onBackPressed() { + showStatusBarBeforeFinishing(); + super.onBackPressed(); + } + @RequiresApi(api = 16) private void onImageClicked(@Nullable Boolean clicked) { if (clicked != null && clicked) { @@ -229,9 +238,8 @@ public class ImageActivity extends BriarActivity @RequiresApi(api = 16) private void hideSystemUi(View decorView) { - decorView.setSystemUiVisibility(SYSTEM_UI_FLAG_FULLSCREEN | - SYSTEM_UI_FLAG_LAYOUT_STABLE | SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - ); + decorView.setSystemUiVisibility( + SYSTEM_UI_FLAG_FULLSCREEN | UI_FLAGS_DEFAULT); appBarLayout.animate() .translationYBy(-1 * appBarLayout.getHeight()) .alpha(0f) @@ -241,9 +249,7 @@ public class ImageActivity extends BriarActivity @RequiresApi(api = 16) private void showSystemUi(View decorView) { - decorView.setSystemUiVisibility( - SYSTEM_UI_FLAG_LAYOUT_STABLE | SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - ); + decorView.setSystemUiVisibility(UI_FLAGS_DEFAULT); appBarLayout.animate() .translationYBy(appBarLayout.getHeight()) .alpha(1f) @@ -251,6 +257,18 @@ public class ImageActivity extends BriarActivity .start(); } + /** + * If we don't show the status bar again before finishing this activity, + * the return transition will "jump" down the size of the status bar + * when the previous activity (with visible status bar) is shown. + */ + private void showStatusBarBeforeFinishing() { + if (SDK_INT >= 16 && appBarLayout.getVisibility() == GONE) { + View decorView = getWindow().getDecorView(); + decorView.setSystemUiVisibility(UI_FLAGS_DEFAULT); + } + } + private void showSaveImageDialog() { OnClickListener okListener = (dialog, which) -> { if (SDK_INT >= 19) {