Add thumbnail shared element animation.

This commit is contained in:
Alex Hart
2023-02-09 14:38:48 -04:00
committed by Greyson Parrelli
parent 2c48d40375
commit d0de43a6b2
25 changed files with 484 additions and 252 deletions

View File

@@ -97,7 +97,7 @@ public class ThreadPhotoRailView extends FrameLayout {
}
imageView.setOnClickListener(v -> {
if (clickedListener != null) clickedListener.onItemClicked(mediaRecord);
if (clickedListener != null) clickedListener.onItemClicked(imageView, mediaRecord);
});
}
@@ -118,6 +118,6 @@ public class ThreadPhotoRailView extends FrameLayout {
}
public interface OnItemClickedListener {
void onItemClicked(MediaTable.MediaRecord mediaRecord);
void onItemClicked(View itemView, MediaTable.MediaRecord mediaRecord);
}
}

View File

@@ -8,6 +8,7 @@ import android.view.View
import androidx.core.app.ActivityCompat
import androidx.core.app.ActivityOptionsCompat
import androidx.core.util.Pair
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.settings.DSLSettingsActivity
import org.thoughtcrime.securesms.groups.GroupId
@@ -22,6 +23,7 @@ class ConversationSettingsActivity : DSLSettingsActivity(), ConversationSettings
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
ActivityCompat.postponeEnterTransition(this)
setExitSharedElementCallback(MaterialContainerTransformSharedElementCallback())
super.onCreate(savedInstanceState, ready)
}

View File

@@ -1,5 +1,6 @@
package org.thoughtcrime.securesms.components.settings.conversation
import android.app.ActivityOptions
import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
@@ -528,10 +529,13 @@ class ConversationSettingsFragment : DSLSettingsFragment(
SharedMediaPreference.Model(
mediaCursor = state.sharedMedia,
mediaIds = state.sharedMediaIds,
onMediaRecordClick = { mediaRecord, isLtr ->
onMediaRecordClick = { view, mediaRecord, isLtr ->
view.transitionName = "thumb"
val options = ActivityOptions.makeSceneTransitionAnimation(requireActivity(), view, "thumb")
startActivityForResult(
MediaIntentFactory.intentFromMediaRecord(requireContext(), mediaRecord, isLtr, allMediaInRail = true),
REQUEST_CODE_RETURN_FROM_MEDIA
REQUEST_CODE_RETURN_FROM_MEDIA,
options.toBundle()
)
}
)

View File

@@ -24,7 +24,7 @@ object SharedMediaPreference {
class Model(
val mediaCursor: Cursor,
val mediaIds: List<Long>,
val onMediaRecordClick: (MediaTable.MediaRecord, Boolean) -> Unit
val onMediaRecordClick: (View, MediaTable.MediaRecord, Boolean) -> Unit
) : PreferenceModel<Model>() {
override fun areItemsTheSame(newItem: Model): Boolean {
return true
@@ -42,8 +42,8 @@ object SharedMediaPreference {
override fun bind(model: Model) {
rail.setCursor(GlideApp.with(rail), model.mediaCursor)
rail.setListener {
model.onMediaRecordClick(it, ViewUtil.isLtr(rail))
rail.setListener { v, m ->
model.onMediaRecordClick(v, m, ViewUtil.isLtr(rail))
}
}
}