diff options
author | Santiago Etchebehere <santie@google.com> | 2020-09-11 10:15:52 -0700 |
---|---|---|
committer | Santiago Etchebehere <santie@google.com> | 2020-09-11 10:15:52 -0700 |
commit | 067634700688a18a705de531f451bd1a5d92fa88 (patch) | |
tree | 5afb8b38311e0e311650bec9b5b749644c713b80 | |
parent | 537487aa4e01a45c01781f7cbfe304dd323d0d71 (diff) | |
parent | ff53df5d0ff17c808a3d2e9f4079efc5eb4af87a (diff) | |
download | WallpaperPicker2-067634700688a18a705de531f451bd1a5d92fa88.tar.gz |
Merging from ub-launcher3-rvc-qpr-dev @ build 6827161
Bug:150504032
Test: manual, presubmit on the source branch
x20/teams/android-launcher/merge/ub-launcher3-rvc-qpr-dev_rvc-qpr-dev_6827161.html
Change-Id: Iba694d82f686e3affe6cd71a14895e3cf06166c7
5 files changed, 45 insertions, 4 deletions
diff --git a/src/com/android/wallpaper/picker/BaseActivity.java b/src/com/android/wallpaper/picker/BaseActivity.java index 7f2ea604..25a2b2ac 100755 --- a/src/com/android/wallpaper/picker/BaseActivity.java +++ b/src/com/android/wallpaper/picker/BaseActivity.java @@ -21,7 +21,7 @@ import androidx.appcompat.app.AppCompatActivity; * Base activity that keeps track of whether fragment transactions are safe to commit given the * activity's current lifecycle state. */ -public class BaseActivity extends AppCompatActivity { +public class BaseActivity extends AppCompatActivity implements FragmentTransactionChecker { private boolean mIsSafeToCommitFragmentTransaction; @@ -37,6 +37,7 @@ public class BaseActivity extends AppCompatActivity { mIsSafeToCommitFragmentTransaction = false; } + @Override public boolean isSafeToCommitFragmentTransaction() { return mIsSafeToCommitFragmentTransaction; } diff --git a/src/com/android/wallpaper/picker/FragmentTransactionChecker.java b/src/com/android/wallpaper/picker/FragmentTransactionChecker.java new file mode 100644 index 00000000..c25a41ff --- /dev/null +++ b/src/com/android/wallpaper/picker/FragmentTransactionChecker.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.wallpaper.picker; + +/** + * An interface for a class to keep track of whether fragment transactions are safe to commit given + * the activity's current lifecycle state. + */ +public interface FragmentTransactionChecker { + /** + * Checks if the fragment transactions are safe to commit + * + * @return {@code true} if it is safe; {@code false} otherwise. + */ + boolean isSafeToCommitFragmentTransaction(); +} diff --git a/src/com/android/wallpaper/picker/ImagePreviewFragment.java b/src/com/android/wallpaper/picker/ImagePreviewFragment.java index b1153bb8..308e9073 100755 --- a/src/com/android/wallpaper/picker/ImagePreviewFragment.java +++ b/src/com/android/wallpaper/picker/ImagePreviewFragment.java @@ -52,6 +52,7 @@ import androidx.fragment.app.FragmentActivity; import com.android.wallpaper.R; import com.android.wallpaper.asset.Asset; +import com.android.wallpaper.asset.CurrentWallpaperAssetVN; import com.android.wallpaper.model.WallpaperInfo; import com.android.wallpaper.module.WallpaperPersister.Destination; import com.android.wallpaper.module.WallpaperPersister.SetWallpaperCallback; @@ -314,7 +315,8 @@ public class ImagePreviewFragment extends PreviewFragment { // Set page bitmap. mFullResImageView.setImage(ImageSource.bitmap(pageBitmap)); - setDefaultWallpaperZoomAndScroll(); + setDefaultWallpaperZoomAndScroll( + mWallpaperAsset instanceof CurrentWallpaperAssetVN); crossFadeInMosaicView(); } getActivity().invalidateOptionsMenu(); @@ -370,14 +372,20 @@ public class ImagePreviewFragment extends PreviewFragment { * * <p>This method is called once in the Fragment lifecycle after the wallpaper asset has loaded * and rendered to the layout. + * + * @param offsetToFarLeft {@code true} if we want to offset the visible rectangle to far left of + * the raw wallpaper; {@code false} otherwise. */ - private void setDefaultWallpaperZoomAndScroll() { + private void setDefaultWallpaperZoomAndScroll(boolean offsetToFarLeft) { // Determine minimum zoom to fit maximum visible area of wallpaper on crop surface. int cropWidth = mWorkspaceSurface.getMeasuredWidth(); int cropHeight = mWorkspaceSurface.getMeasuredHeight(); Point crop = new Point(cropWidth, cropHeight); Rect visibleRawWallpaperRect = WallpaperCropUtils.calculateVisibleRect(mRawWallpaperSize, crop); + if (offsetToFarLeft) { + visibleRawWallpaperRect.offsetTo(/* newLeft= */ 0, visibleRawWallpaperRect.top); + } final PointF centerPosition = WallpaperCropUtils.calculateDefaultCenter(requireContext(), mRawWallpaperSize, visibleRawWallpaperRect); diff --git a/src/com/android/wallpaper/picker/LivePreviewFragment.java b/src/com/android/wallpaper/picker/LivePreviewFragment.java index a28b4a0a..d2078095 100644 --- a/src/com/android/wallpaper/picker/LivePreviewFragment.java +++ b/src/com/android/wallpaper/picker/LivePreviewFragment.java @@ -302,7 +302,9 @@ public class LivePreviewFragment extends PreviewFragment implements mWallpaperConnection = null; } mWorkspaceSurfaceCallback.cleanUp(); + mWorkspaceSurface.getHolder().removeCallback(mWorkspaceSurfaceCallback); mWallpaperSurfaceCallback.cleanUp(); + mWallpaperSurface.getHolder().removeCallback(mWallpaperSurfaceCallback); } private void previewLiveWallpaper(ImageView thumbnailView) { diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java index 5fd0e7ac..260d121f 100755 --- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java +++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java @@ -78,6 +78,7 @@ import com.android.wallpaper.module.WallpaperSetter; import com.android.wallpaper.picker.BaseActivity; import com.android.wallpaper.picker.BottomActionBarFragment; import com.android.wallpaper.picker.CurrentWallpaperBottomSheetPresenter; +import com.android.wallpaper.picker.FragmentTransactionChecker; import com.android.wallpaper.picker.MyPhotosStarter.MyPhotosStarterProvider; import com.android.wallpaper.picker.PreviewActivity; import com.android.wallpaper.picker.RotationStarter; @@ -816,7 +817,7 @@ public class IndividualPickerFragment extends BottomActionBarFragment } private void showStartRotationErrorDialog(@NetworkPreference int networkPreference) { - BaseActivity activity = (BaseActivity) getActivity(); + FragmentTransactionChecker activity = (FragmentTransactionChecker) getActivity(); if (activity != null) { StartRotationErrorDialogFragment startRotationErrorDialogFragment = StartRotationErrorDialogFragment.newInstance(networkPreference); |