summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
author Andrey Epin <ayepin@google.com> 2023-04-17 17:02:10 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-04-17 17:02:10 +0000
commitf09eb638d616618dca760af464204caba42313f0 (patch)
tree68488ea03772dd94bd9c9278166587d45ba2d2e8 /java
parent22801df60838cbb29ca5b7d7c238520488dc2b25 (diff)
parentf0b4a9f9c194618c0eb87edf7ecad48f3583e8f9 (diff)
Fix image edit transition animation am: f0b4a9f9c1
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/22652495 Change-Id: I582bb49db57dd61f8d7868c4e6e82bec984a2fdb Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/intentresolver/ChooserActionFactory.java3
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java8
-rw-r--r--java/src/com/android/intentresolver/widget/ImagePreviewView.kt2
-rw-r--r--java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt17
-rw-r--r--java/tests/src/com/android/intentresolver/ChooserActionFactoryTest.kt3
5 files changed, 21 insertions, 12 deletions
diff --git a/java/src/com/android/intentresolver/ChooserActionFactory.java b/java/src/com/android/intentresolver/ChooserActionFactory.java
index 8dafae86..23e04560 100644
--- a/java/src/com/android/intentresolver/ChooserActionFactory.java
+++ b/java/src/com/android/intentresolver/ChooserActionFactory.java
@@ -40,7 +40,6 @@ import android.view.View;
import com.android.intentresolver.chooser.DisplayResolveInfo;
import com.android.intentresolver.chooser.TargetInfo;
import com.android.intentresolver.contentpreview.ChooserContentPreviewUi;
-import com.android.intentresolver.flags.FeatureFlagRepository;
import com.android.intentresolver.widget.ActionRow;
import com.android.internal.annotations.VisibleForTesting;
@@ -104,7 +103,6 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
/**
* @param context
* @param chooserRequest data about the invocation of the current Sharesheet session.
- * @param featureFlagRepository feature flags that may control the eligibility of some actions.
* @param integratedDeviceComponents info about other components that are available on this
* device to implement the supported action types.
* @param onUpdateSharedTextIsExcluded a delegate to be invoked when the "exclude shared text"
@@ -118,7 +116,6 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
public ChooserActionFactory(
Context context,
ChooserRequestParameters chooserRequest,
- FeatureFlagRepository featureFlagRepository,
ChooserIntegratedDeviceComponents integratedDeviceComponents,
ChooserActivityLogger logger,
Consumer<Boolean> onUpdateSharedTextIsExcluded,
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 75ee0648..404d6da3 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -92,6 +92,7 @@ import com.android.intentresolver.model.AppPredictionServiceResolverComparator;
import com.android.intentresolver.model.ResolverRankerServiceResolverComparator;
import com.android.intentresolver.shortcuts.AppPredictorFactory;
import com.android.intentresolver.shortcuts.ShortcutLoader;
+import com.android.intentresolver.widget.ImagePreviewView;
import com.android.intentresolver.widget.ResolverDrawerLayout;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.PackageMonitor;
@@ -682,8 +683,10 @@ public class ChooserActivity extends ResolverActivity implements
@Nullable
private View getFirstVisibleImgPreviewView() {
- View firstImage = findViewById(com.android.internal.R.id.content_preview_image_1_large);
- return firstImage != null && firstImage.isVisibleToUser() ? firstImage : null;
+ View imagePreview = findViewById(R.id.scrollable_image_preview);
+ return imagePreview instanceof ImagePreviewView
+ ? ((ImagePreviewView) imagePreview).getTransitionView()
+ : null;
}
/**
@@ -1295,7 +1298,6 @@ public class ChooserActivity extends ResolverActivity implements
return new ChooserActionFactory(
this,
mChooserRequest,
- mFeatureFlagRepository,
mIntegratedDeviceComponents,
getChooserActivityLogger(),
(isExcluded) -> mExcludeSharedText = isExcluded,
diff --git a/java/src/com/android/intentresolver/widget/ImagePreviewView.kt b/java/src/com/android/intentresolver/widget/ImagePreviewView.kt
index 8813adca..5f92b149 100644
--- a/java/src/com/android/intentresolver/widget/ImagePreviewView.kt
+++ b/java/src/com/android/intentresolver/widget/ImagePreviewView.kt
@@ -18,11 +18,13 @@ package com.android.intentresolver.widget
import android.graphics.Bitmap
import android.net.Uri
+import android.view.View
internal typealias ImageLoader = suspend (Uri) -> Bitmap?
interface ImagePreviewView {
fun setTransitionElementStatusCallback(callback: TransitionElementStatusCallback?)
+ fun getTransitionView(): View?
/**
* [ImagePreviewView] progressively prepares views for shared element transition and reports
diff --git a/java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt b/java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt
index 8dcaacb8..7755610d 100644
--- a/java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt
+++ b/java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt
@@ -122,6 +122,15 @@ class ScrollableImagePreviewView : RecyclerView, ImagePreviewView {
previewAdapter.transitionStatusElementCallback = callback
}
+ override fun getTransitionView(): View? {
+ for (i in 0 until childCount) {
+ val child = getChildAt(i)
+ val vh = getChildViewHolder(child)
+ if (vh is PreviewViewHolder && vh.image.transitionName != null) return child
+ }
+ return null
+ }
+
fun setPreviews(previews: List<Preview>, otherItemCount: Int, imageLoader: ImageLoader) {
previewAdapter.reset(0, imageLoader)
batchLoader?.cancel()
@@ -250,7 +259,8 @@ class ScrollableImagePreviewView : RecyclerView, ImagePreviewView {
is PreviewViewHolder -> vh.bind(
previews[position],
imageLoader ?: error("ImageLoader is missing"),
- if (position == firstImagePos && transitionStatusElementCallback != null) {
+ isSharedTransitionElement = position == firstImagePos,
+ previewReadyCallback = if (position == firstImagePos && transitionStatusElementCallback != null) {
this::onTransitionElementReady
} else {
null
@@ -282,7 +292,7 @@ class ScrollableImagePreviewView : RecyclerView, ImagePreviewView {
}
private class PreviewViewHolder(view: View) : ViewHolder(view) {
- private val image = view.requireViewById<ImageView>(R.id.image)
+ val image = view.requireViewById<ImageView>(R.id.image)
private val badgeFrame = view.requireViewById<View>(R.id.badge_frame)
private val badge = view.requireViewById<ImageView>(R.id.badge)
private var scope: CoroutineScope? = null
@@ -290,13 +300,14 @@ class ScrollableImagePreviewView : RecyclerView, ImagePreviewView {
fun bind(
preview: Preview,
imageLoader: ImageLoader,
+ isSharedTransitionElement: Boolean,
previewReadyCallback: ((String) -> Unit)?
) {
image.setImageDrawable(null)
(image.layoutParams as? ConstraintLayout.LayoutParams)?.let { params ->
params.dimensionRatio = preview.aspectRatioString
}
- image.transitionName = if (previewReadyCallback != null) {
+ image.transitionName = if (isSharedTransitionElement) {
TRANSITION_NAME
} else {
null
diff --git a/java/tests/src/com/android/intentresolver/ChooserActionFactoryTest.kt b/java/tests/src/com/android/intentresolver/ChooserActionFactoryTest.kt
index 0a8c22b7..d72c9aa6 100644
--- a/java/tests/src/com/android/intentresolver/ChooserActionFactoryTest.kt
+++ b/java/tests/src/com/android/intentresolver/ChooserActionFactoryTest.kt
@@ -29,11 +29,9 @@ import android.view.View
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import com.android.intentresolver.flags.FeatureFlagRepository
-import com.android.intentresolver.flags.Flags
import com.google.common.collect.ImmutableList
import com.google.common.truth.Truth.assertThat
import org.junit.After
-import org.junit.Assert
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
@@ -142,7 +140,6 @@ class ChooserActionFactoryTest {
return ChooserActionFactory(
context,
chooserRequest,
- flags,
mock<ChooserIntegratedDeviceComponents>(),
logger,
Consumer<Boolean>{},