Apply BottomActionBar to grid page
Video: https://drive.google.com/a/google.com/file/d/1EhYS7kl73tVw9NX6tfA4-F8_nrvkk-RL/view?usp=sharing
Test: Manually
Bug: 151287328
Change-Id: I3d23d29a11eb116e92e3d8c7e4bc27c3bdfd1f2a
diff --git a/res/layout/fragment_grid_picker.xml b/res/layout/fragment_grid_picker.xml
index f664568..ce571c9 100644
--- a/res/layout/fragment_grid_picker.xml
+++ b/res/layout/fragment_grid_picker.xml
@@ -64,24 +64,11 @@
android:id="@+id/placeholder"
android:layout_width="match_parent"
android:layout_height="@dimen/min_taptarget_height"
- app:layout_constraintBottom_toTopOf="@id/apply_button"
+ app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/options_container"
app:layout_constraintVertical_bias="1.0"/>
- <Button
- android:id="@+id/apply_button"
- style="@style/ActionPrimaryButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="end"
- android:layout_marginEnd="10dp"
- android:layout_marginVertical="10dp"
- android:layout_weight="1"
- android:text="@string/apply_theme_btn"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"/>
-
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.core.widget.ContentLoadingProgressBar
diff --git a/src/com/android/customization/picker/CustomizationPickerActivity.java b/src/com/android/customization/picker/CustomizationPickerActivity.java
index d4f8095..15ced54 100644
--- a/src/com/android/customization/picker/CustomizationPickerActivity.java
+++ b/src/com/android/customization/picker/CustomizationPickerActivity.java
@@ -72,6 +72,7 @@
import com.android.wallpaper.picker.TopLevelPickerActivity;
import com.android.wallpaper.picker.WallpaperPickerDelegate;
import com.android.wallpaper.picker.WallpapersUiContainer;
+import com.android.wallpaper.widget.BottomActionBar;
import com.google.android.material.bottomnavigation.BottomNavigationView;
@@ -287,9 +288,18 @@
@Override
public void onBackPressed() {
+ // For wallpaper tab, since it had child fragment.
if (mWallpaperCategoryFragment != null && mWallpaperCategoryFragment.popChildFragment()) {
return;
}
+
+ // For other tabs without child fragment. Hide the BottomActionBar if back key is pressed.
+ BottomActionBar bottomActionBar = findViewById(R.id.bottom_actionbar);
+ if (bottomActionBar != null && bottomActionBar.isVisible()) {
+ bottomActionBar.hide();
+ return;
+ }
+
if (getSupportFragmentManager().popBackStackImmediate()) {
return;
}
diff --git a/src/com/android/customization/picker/grid/GridFragment.java b/src/com/android/customization/picker/grid/GridFragment.java
index 8a4f4b0..c9589ce 100644
--- a/src/com/android/customization/picker/grid/GridFragment.java
+++ b/src/com/android/customization/picker/grid/GridFragment.java
@@ -17,6 +17,9 @@
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
+import static com.android.wallpaper.widget.BottomActionBar.BottomAction.APPLY;
+import static com.android.wallpaper.widget.BottomActionBar.BottomAction.CANCEL;
+
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
@@ -57,11 +60,13 @@
import com.android.wallpaper.module.InjectorProvider;
import com.android.wallpaper.picker.ToolbarFragment;
import com.android.wallpaper.util.SurfaceViewUtils;
+import com.android.wallpaper.widget.BottomActionBar;
import com.android.wallpaper.widget.PreviewPager;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
+import java.util.EnumSet;
import java.util.List;
/**
@@ -100,6 +105,7 @@
private ContentLoadingProgressBar mLoading;
private View mContent;
private View mError;
+ private BottomActionBar mBottomActionBar;
private ThemesUserEventLogger mEventLogger;
@Override
@@ -141,20 +147,7 @@
// Clear memory cache whenever grid fragment view is being loaded.
Glide.get(getContext()).clearMemory();
setUpOptions();
- view.findViewById(R.id.apply_button).setOnClickListener(v -> {
- mGridManager.apply(mSelectedOption, new Callback() {
- @Override
- public void onSuccess() {
- getActivity().finish();
- }
- @Override
- public void onError(@Nullable Throwable throwable) {
- //TODO(santie): handle
- }
- });
-
- });
CurrentWallpaperInfoFactory factory = InjectorProvider.getInjector()
.getCurrentWallpaperFactory(getContext().getApplicationContext());
@@ -174,6 +167,24 @@
loadWallpaperBackground();
}
});
+
+ mBottomActionBar = getActivity().findViewById(R.id.bottom_actionbar);
+ mBottomActionBar.showActionsOnly(EnumSet.of(CANCEL, APPLY));
+ mBottomActionBar.setActionClickListener(CANCEL, unused -> getActivity().onBackPressed());
+ mBottomActionBar.setActionClickListener(APPLY, unused -> {
+ mBottomActionBar.disableActions();
+ mGridManager.apply(mSelectedOption, new Callback() {
+ @Override
+ public void onSuccess() {
+ getActivity().finish();
+ }
+
+ @Override
+ public void onError(@Nullable Throwable throwable) {
+ //TODO(santie): handle
+ }
+ });
+ });
return view;
}
@@ -207,6 +218,7 @@
mOptionsController.addListener(selected -> {
mSelectedOption = (GridOption) selected;
+ mBottomActionBar.show();
mEventLogger.logGridSelected(mSelectedOption);
createAdapter();
});