summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKunhung Li <kunhungli@google.com>2019-04-12 17:16:53 +0800
committerKunhung Li <kunhungli@google.com>2019-04-30 20:36:51 +0800
commitfaf0af1fe4855ad05f1c7c24db8206d3e0ab420d (patch)
treea1938fea9bd94b62a2a87971dad960d65dda02c3 /src
parentecbe70007c06d97cc06d8c2df3143947470911f7 (diff)
downloadandroid_packages_wallpapers_LivePicker-faf0af1fe4855ad05f1c7c24db8206d3e0ab420d.tar.gz
android_packages_wallpapers_LivePicker-faf0af1fe4855ad05f1c7c24db8206d3e0ab420d.tar.bz2
android_packages_wallpapers_LivePicker-faf0af1fe4855ad05f1c7c24db8206d3e0ab420d.zip
Add preview checkbox for LivePicker
Enable preview checkbox to hide bottom panel, otherwise to show it. Default behavior will show bottom panel with preview unchecked. Bug: 130383883 Test: Manual Test Change-Id: Ida5a5fa7ece501aefd906b70b6990eb89fe14c74
Diffstat (limited to 'src')
-rw-r--r--src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java90
1 files changed, 79 insertions, 11 deletions
diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java b/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java
index 7cfdb4d..65e0e6c 100644
--- a/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java
+++ b/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java
@@ -43,7 +43,6 @@ import android.service.wallpaper.IWallpaperEngine;
import android.service.wallpaper.IWallpaperService;
import android.service.wallpaper.WallpaperService;
import android.service.wallpaper.WallpaperSettingsActivity;
-import com.google.android.material.tabs.TabLayout;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
@@ -58,6 +57,7 @@ import android.view.WindowManager.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.ArrayAdapter;
import android.widget.Button;
+import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toolbar;
@@ -71,6 +71,10 @@ import androidx.slice.widget.SliceView;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback;
+import com.google.android.material.tabs.TabLayout;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -90,6 +94,11 @@ public class LiveWallpaperPreview extends Activity {
private Intent mDeleteIntent;
private View mLoading;
+ private View mViewBottomPane;
+ private BottomSheetBehavior mBottomSheetBehavior;
+ private ViewPager mViewPager;
+ private TabLayout mTabLayout;
+ private CheckBox mPreview;
protected final List<Pair<String, View>> mPages = new ArrayList<>();
private SliceView mSliceViewSettings;
@@ -282,9 +291,12 @@ public class LiveWallpaperPreview extends Activity {
}
private void populateBottomPane() {
- final View viewBottomPane = findViewById(R.id.bottom_pane);
- final ViewPager viewPager = findViewById(R.id.viewpager);
- final TabLayout tabLayout = findViewById(R.id.tablayout);
+ mViewBottomPane = findViewById(R.id.bottom_pane);
+ mViewPager = findViewById(R.id.viewpager);
+ mTabLayout = findViewById(R.id.tablayout);
+
+ mBottomSheetBehavior = BottomSheetBehavior.from(mViewBottomPane);
+ mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
// Create PagerAdapter
final PagerAdapter pagerAdapter = new PagerAdapter() {
@@ -325,24 +337,24 @@ public class LiveWallpaperPreview extends Activity {
};
// Add OnPageChangeListener to re-measure ViewPager's height
- viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
+ mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
- viewPager.requestLayout();
+ mViewPager.requestLayout();
}
});
// Set PagerAdapter
- viewPager.setAdapter(pagerAdapter);
+ mViewPager.setAdapter(pagerAdapter);
// Make TabLayout visible if there are more than one page
if (mPages.size() > 1) {
- tabLayout.setVisibility(View.VISIBLE);
- tabLayout.setupWithViewPager(viewPager);
+ mTabLayout.setVisibility(View.VISIBLE);
+ mTabLayout.setupWithViewPager(mViewPager);
}
// Initializes a rounded rectangle outline and clips the upper corners to be rounded.
- viewBottomPane.setOutlineProvider(new ViewOutlineProvider() {
+ mViewBottomPane.setOutlineProvider(new ViewOutlineProvider() {
private final int radius = getResources().getDimensionPixelSize(
R.dimen.preview_viewpager_round_radius);
@@ -352,17 +364,73 @@ public class LiveWallpaperPreview extends Activity {
view.getHeight() + radius, radius);
}
});
- viewBottomPane.setClipToOutline(true);
+ mViewBottomPane.setClipToOutline(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_preview, menu);
+ setupPreviewMenu(menu);
menu.findItem(R.id.configure).setVisible(mSettingsIntent != null);
menu.findItem(R.id.delete_wallpaper).setVisible(mDeleteIntent != null);
return super.onCreateOptionsMenu(menu);
}
+ private void setupPreviewMenu(Menu menu) {
+ mPreview = (CheckBox) menu.findItem(R.id.preview).getActionView();
+ mPreview.setOnClickListener(this::setPreviewBehavior);
+
+ BottomSheetCallback callback = new BottomSheetCallback() {
+ @Override
+ public void onStateChanged(View bottomSheet, int newState) {
+ switch (newState) {
+ case BottomSheetBehavior.STATE_COLLAPSED:
+ setPreviewChecked(true /* checked */);
+ break;
+ case BottomSheetBehavior.STATE_EXPANDED:
+ setPreviewChecked(false /* checked */);
+ break;
+ }
+ }
+
+ @Override
+ public void onSlide(View bottomSheet, float slideOffset) {
+ mTabLayout.setAlpha(slideOffset);
+ mViewPager.setAlpha(slideOffset);
+ }
+ };
+ mBottomSheetBehavior.setBottomSheetCallback(callback);
+
+ int state = mBottomSheetBehavior.getState();
+ callback.onStateChanged(mViewBottomPane, state);
+ switch (state) {
+ case BottomSheetBehavior.STATE_COLLAPSED:
+ callback.onSlide(mViewBottomPane, 0f);
+ break;
+ case BottomSheetBehavior.STATE_EXPANDED:
+ callback.onSlide(mViewBottomPane, 1f);
+ break;
+ }
+ }
+
+ private void setPreviewChecked(boolean checked) {
+ if (mPreview != null) {
+ mPreview.setChecked(checked);
+ int resId = checked ? R.string.expand_attribution_panel
+ : R.string.collapse_attribution_panel;
+ mPreview.setContentDescription(getResources().getString(resId));
+ }
+ }
+
+ private void setPreviewBehavior(final View v) {
+ CheckBox checkbox = (CheckBox) v;
+ if (checkbox.isChecked()) {
+ mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
+ } else {
+ mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
+ }
+ }
+
public void setLiveWallpaper(final View v) {
if (mWallpaperManager.getWallpaperInfo() != null
&& mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_LOCK) < 0) {