Merge "Reduce potential latency of popping up destination dialog" into sc-v2-dev
diff --git a/res/layout/fragment_image_preview.xml b/res/layout/fragment_image_preview.xml
index 46b4b88..de8df17 100644
--- a/res/layout/fragment_image_preview.xml
+++ b/res/layout/fragment_image_preview.xml
@@ -21,6 +21,15 @@
android:layout_height="match_parent"
android:background="?android:colorBackground">
+ <!-- Preview header (toolbar + status bar) is used to solve preview with full screen animated
+ to non-full screen cases. -->
+ <FrameLayout
+ android:id="@+id/preview_header"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="?android:attr/actionBarSize">
+ </FrameLayout>
+
<FrameLayout
android:id="@+id/separated_tabs_container"
android:layout_width="match_parent"
diff --git a/res/layout/fragment_live_preview.xml b/res/layout/fragment_live_preview.xml
index dc8273c..462329b 100644
--- a/res/layout/fragment_live_preview.xml
+++ b/res/layout/fragment_live_preview.xml
@@ -21,6 +21,15 @@
android:layout_height="match_parent"
android:background="?android:colorBackground">
+ <!-- Preview header (toolbar + status bar) is used to solve preview with full screen animated
+ to non-full screen cases. -->
+ <FrameLayout
+ android:id="@+id/preview_header"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="?android:attr/actionBarSize">
+ </FrameLayout>
+
<FrameLayout
android:id="@+id/separated_tabs_container"
android:layout_width="match_parent"
diff --git a/src/com/android/wallpaper/picker/AppbarFragment.java b/src/com/android/wallpaper/picker/AppbarFragment.java
index 4a71bb0..cda2263 100644
--- a/src/com/android/wallpaper/picker/AppbarFragment.java
+++ b/src/com/android/wallpaper/picker/AppbarFragment.java
@@ -110,6 +110,12 @@
mToolbar = rootView.findViewById(getToolbarId());
mTitleView = mToolbar.findViewById(R.id.custom_toolbar_title);
+
+ // Update toolbar and status bar color.
+ mToolbar.setBackgroundResource(getToolbarColorId());
+ getActivity().getWindow().setStatusBarColor(
+ getActivity().getResources().getColor(getToolbarColorId()));
+
CharSequence title;
if (getArguments() != null) {
title = getArguments().getCharSequence(ARG_TITLE, getDefaultTitle());
@@ -139,6 +145,10 @@
return R.id.toolbar;
}
+ protected int getToolbarColorId() {
+ return R.color.settingslib_colorSurfaceHeader;
+ }
+
/**
* Set up arrow feature status to enabled or not. Enable it for updating
* onBottomActionBarReady() while initializing without toolbar setup.
diff --git a/src/com/android/wallpaper/picker/CustomizationPickerFragment.java b/src/com/android/wallpaper/picker/CustomizationPickerFragment.java
index 8884c0e..c28af3a 100644
--- a/src/com/android/wallpaper/picker/CustomizationPickerFragment.java
+++ b/src/com/android/wallpaper/picker/CustomizationPickerFragment.java
@@ -133,6 +133,11 @@
}
@Override
+ protected int getToolbarColorId() {
+ return android.R.color.transparent;
+ }
+
+ @Override
public boolean onBackPressed() {
// TODO(b/191120122) Improve glitchy animation in Settings.
if (ActivityUtils.isLaunchedFromSettingsSearch(getActivity().getIntent())) {
diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
index 1809c63..ae3d63c 100755
--- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java
@@ -144,6 +144,10 @@
mTouchForwardingLayout = mContainer.findViewById(R.id.touch_forwarding_layout);
mTouchForwardingLayout.setForwardingEnabled(true);
+ // Update preview header color which covers toolbar and status bar area.
+ View previewHeader = view.findViewById(R.id.preview_header);
+ previewHeader.setBackgroundColor(activity.getColor(R.color.settingslib_colorSurfaceHeader));
+
// Set aspect ratio on the preview card dynamically.
ConstraintSet set = new ConstraintSet();
set.clone(mContainer);
diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java
index 45217f1..5fbb9ee 100644
--- a/src/com/android/wallpaper/picker/LivePreviewFragment.java
+++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java
@@ -167,6 +167,11 @@
activity.getWindowManager().getDefaultDisplay());
mPreviewContainer = view.findViewById(R.id.live_wallpaper_preview);
mTouchForwardingLayout = view.findViewById(R.id.touch_forwarding_layout);
+
+ // Update preview header color which covers toolbar and status bar area.
+ View previewHeader = view.findViewById(R.id.preview_header);
+ previewHeader.setBackgroundColor(activity.getColor(R.color.settingslib_colorSurfaceHeader));
+
// Set aspect ratio on the preview card.
ConstraintSet set = new ConstraintSet();
set.clone((ConstraintLayout) mPreviewContainer);
diff --git a/src/com/android/wallpaper/picker/PreviewFragment.java b/src/com/android/wallpaper/picker/PreviewFragment.java
index 172bacd..c91719e 100755
--- a/src/com/android/wallpaper/picker/PreviewFragment.java
+++ b/src/com/android/wallpaper/picker/PreviewFragment.java
@@ -182,6 +182,11 @@
}
@Override
+ protected int getToolbarColorId() {
+ return android.R.color.transparent;
+ }
+
+ @Override
@CallSuper
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@@ -201,6 +206,13 @@
mFullScreenAnimation.setWindowInsets(windowInsets);
mFullScreenAnimation.placeViews();
+
+ // Update preview header's padding top to align status bar height.
+ View previewHeader = v.findViewById(R.id.preview_header);
+ previewHeader.setPadding(previewHeader.getPaddingLeft(),
+ mFullScreenAnimation.getStatusBarHeight(),
+ previewHeader.getPaddingRight(), previewHeader.getPaddingBottom());
+
return windowInsets.consumeSystemWindowInsets();
}
);
diff --git a/src/com/android/wallpaper/util/FullScreenAnimation.java b/src/com/android/wallpaper/util/FullScreenAnimation.java
index 0a97f72..bf123b3 100644
--- a/src/com/android/wallpaper/util/FullScreenAnimation.java
+++ b/src/com/android/wallpaper/util/FullScreenAnimation.java
@@ -128,7 +128,12 @@
mIsHomeSelected = isHomeSelected;
}
- private int getStatusBarHeight() {
+ /**
+ * Returns the height of status bar.
+ *
+ * @return height of status bar.
+ */
+ public int getStatusBarHeight() {
return mStatusBarHeight;
}