From 7ce524e09fa3c8d4cf31288935da7d937ebcde29 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 6 Jul 2020 11:48:59 +0200 Subject: [PATCH] Animations for media --- .../android/activities/ShowAccountActivity.java | 12 +++++++++++- .../app/fedilab/android/drawers/ArtListAdapter.java | 13 ++++++++++++- .../app/fedilab/android/drawers/ImageAdapter.java | 12 +++++++++++- .../android/drawers/NotificationsListAdapter.java | 11 ++++++++++- .../android/drawers/PixelfedListAdapter.java | 11 ++++++++++- .../android/drawers/PixelfedStoriesListAdapter.java | 11 ++++++++++- .../app/fedilab/android/drawers/SliderAdapter.java | 11 ++++++++++- .../android/fragments/MediaSliderFragment.java | 3 +++ 8 files changed, 77 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java b/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java index a734f9a06..64ea7149b 100644 --- a/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java @@ -14,6 +14,7 @@ * see . */ package app.fedilab.android.activities; +import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Intent; @@ -48,6 +49,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; +import androidx.core.app.ActivityOptionsCompat; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -739,7 +741,15 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt b.putInt("position", 1); b.putInt("bgcolor", getResources().getColor(R.color.cyanea_primary_dark)); intent.putExtras(b); - startActivity(intent); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation(ShowAccountActivity.this, account_pp, attachment.getUrl()); + // start the new activity + startActivity(intent, options.toBundle()); + }else{ + // start the new activity + startActivity(intent); + } }); //Follow button String target = account.getId(); diff --git a/app/src/main/java/app/fedilab/android/drawers/ArtListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/ArtListAdapter.java index 5864755b4..37cb2fa01 100644 --- a/app/src/main/java/app/fedilab/android/drawers/ArtListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/ArtListAdapter.java @@ -15,6 +15,7 @@ package app.fedilab.android.drawers; * see . */ import android.annotation.SuppressLint; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -30,6 +31,7 @@ import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.core.app.ActivityOptionsCompat; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; @@ -177,7 +179,16 @@ public class ArtListAdapter extends RecyclerView.Adapter= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity)context, holder.art_media, status.getMedia_attachments().get(0).getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + }else{ + // start the new activity + context.startActivity(intent); + } + }); holder.art_author.setOnClickListener(v -> { Intent intent = new Intent(context, ShowConversationActivity.class); diff --git a/app/src/main/java/app/fedilab/android/drawers/ImageAdapter.java b/app/src/main/java/app/fedilab/android/drawers/ImageAdapter.java index 9a43d83e1..faec32fd7 100644 --- a/app/src/main/java/app/fedilab/android/drawers/ImageAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/ImageAdapter.java @@ -14,6 +14,7 @@ package app.fedilab.android.drawers; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -23,6 +24,7 @@ import android.view.ViewGroup; import android.widget.ImageView; import androidx.annotation.NonNull; +import androidx.core.app.ActivityOptionsCompat; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; @@ -86,7 +88,15 @@ public class ImageAdapter extends RecyclerView.Adapter b.putInt("position", (viewHolder.getAdapterPosition() + 1)); b.putInt("bgcolor", context.getResources().getColor(R.color.cyanea_primary_dark)); intent.putExtras(b); - context.startActivity(intent); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity)context, holder.imageView, attachmentsTmp.get((viewHolder.getAdapterPosition())).getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + }else{ + // start the new activity + context.startActivity(intent); + } }); holder.imageView.setOnLongClickListener(v -> { Intent intent = new Intent(context, ShowConversationActivity.class); diff --git a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java index 8b3feadc8..134d60ebb 100644 --- a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java @@ -53,6 +53,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.core.app.ActivityOptionsCompat; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.preference.PreferenceManager; @@ -1192,7 +1193,15 @@ public class NotificationsListAdapter extends RecyclerView.Adapter= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity)context, imageView, notification.getStatus().getMedia_attachments().get(finalPosition-1).getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + }else{ + // start the new activity + context.startActivity(intent); + } }); i++; position++; diff --git a/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java index 1843747ad..225baf848 100644 --- a/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java @@ -47,6 +47,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.cardview.widget.CardView; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.core.app.ActivityOptionsCompat; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -399,7 +400,15 @@ public class PixelfedListAdapter extends RecyclerView.Adapter= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity)context, holder.art_media, status.getMedia_attachments().get(0).getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + }else{ + // start the new activity + context.startActivity(intent); + } }); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); diff --git a/app/src/main/java/app/fedilab/android/drawers/PixelfedStoriesListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/PixelfedStoriesListAdapter.java index d53f1a544..59bd8e198 100644 --- a/app/src/main/java/app/fedilab/android/drawers/PixelfedStoriesListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/PixelfedStoriesListAdapter.java @@ -28,6 +28,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.cardview.widget.CardView; +import androidx.core.app.ActivityOptionsCompat; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; @@ -136,7 +137,15 @@ public class PixelfedStoriesListAdapter extends RecyclerView.Adapter= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity)context, holder.art_media, attachments.get(0).getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + }else{ + // start the new activity + context.startActivity(intent); + } }); diff --git a/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java b/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java index 5ab39d962..b4f151394 100644 --- a/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java @@ -36,6 +36,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AlertDialog; +import androidx.core.app.ActivityOptionsCompat; import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.CustomTarget; @@ -109,7 +110,15 @@ public class SliderAdapter extends SliderViewAdapter= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity)contextWeakReference.get(), viewHolder.imageViewBackground, attachments.get((position)).getUrl()); + // start the new activity + contextWeakReference.get().startActivity(intent, options.toBundle()); + }else{ + // start the new activity + contextWeakReference.get().startActivity(intent); + } }); } else { viewHolder.imageViewBackground.setOnClickListener(v -> showAddDescription(attachments.get(position))); diff --git a/app/src/main/java/app/fedilab/android/fragments/MediaSliderFragment.java b/app/src/main/java/app/fedilab/android/fragments/MediaSliderFragment.java index aa7b4ac1d..a6c2ee39c 100644 --- a/app/src/main/java/app/fedilab/android/fragments/MediaSliderFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/MediaSliderFragment.java @@ -204,6 +204,7 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { imageView.setTransitionName(attachment.getUrl()); scheduleStartPostponedTransition(imageView); + imageView.invalidate(); } if (bgColor != -1) { media_fragment_container.setBackgroundColor(bgColor); @@ -245,6 +246,7 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { imageView.setTransitionName(attachment.getUrl()); scheduleStartPostponedTransition(imageView); + imageView.invalidate(); } } } @@ -254,6 +256,7 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { imageView.setTransitionName(attachment.getUrl()); scheduleStartPostponedTransition(imageView); + imageView.invalidate(); } }