summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-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
4 files changed, 21 insertions, 9 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