From 5afebc00101a887200f9d892dcefa9eedb7bdac5 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 20 Jun 2020 16:33:49 +0200 Subject: [PATCH] Some transitions --- .../android/activities/BaseActivity.java | 6 ++++ .../activities/SlideMediaActivity.java | 5 ++++ .../android/drawers/StatusListAdapter.java | 13 ++++++++- .../fragments/MediaSliderFragment.java | 28 +++++++++++++------ app/src/main/res/values/styles.xml | 5 +++- 5 files changed, 47 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/activities/BaseActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseActivity.java index 96f7a25d9..72cf3f82d 100644 --- a/app/src/main/java/app/fedilab/android/activities/BaseActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/BaseActivity.java @@ -5,9 +5,12 @@ import android.app.ProgressDialog; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Configuration; +import android.os.Build; import android.os.Bundle; +import android.transition.Explode; import android.view.ActionMode; import android.view.View; +import android.view.Window; import android.widget.Toast; import androidx.annotation.NonNull; @@ -67,6 +70,9 @@ public class BaseActivity extends CyaneaAppCompatActivity { .build()); }*/ canShowActionMode = true; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); + } super.onCreate(savedInstanceState); } diff --git a/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java b/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java index 91384f9ee..451cfc15f 100644 --- a/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java @@ -25,6 +25,7 @@ import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Point; +import android.graphics.PorterDuff; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Build; @@ -123,6 +124,10 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo default: setTheme(R.style.TransparentDark); } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + ActivityCompat.postponeEnterTransition(SlideMediaActivity.this); + + } setContentView(R.layout.activity_media_pager); fullscreen = false; diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index 99fa3a5f4..f3c340ac0 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -16,6 +16,7 @@ package app.fedilab.android.drawers; import android.annotation.SuppressLint; import android.app.Activity; +import android.app.ActivityOptions; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; @@ -3413,7 +3414,17 @@ public class StatusListAdapter extends RecyclerView.Adapter= android.os.Build.VERSION_CODES.LOLLIPOP) { + options = ActivityOptions + .makeSceneTransitionAnimation((Activity)context, imageView, attachment.getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + }else{ + // start the new activity + context.startActivity(intent); + } + } } else { status.setAttachmentShown(true); 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 e54d28ee8..3fe6575fa 100644 --- a/app/src/main/java/app/fedilab/android/fragments/MediaSliderFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/MediaSliderFragment.java @@ -40,6 +40,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; @@ -182,12 +183,7 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl url = attachment.getRemote_url(); attachment.setType(type); } - - if (bgColor != -1) { - RelativeLayout media_fragment_container = rootView.findViewById(R.id.media_fragment_container); - media_fragment_container.setBackgroundColor(bgColor); - } - + RelativeLayout media_fragment_container = rootView.findViewById(R.id.media_fragment_container); switch (type.toLowerCase()) { case "image": pbar_inf.setScaleY(1f); @@ -201,8 +197,15 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl new CustomTarget() { @Override public void onResourceReady(@NonNull final Bitmap resource, Transition transition) { - Bitmap imageCompressed = Helper.compressImageIfNeeded(resource); - imageView.setImageBitmap(imageCompressed); + //Bitmap imageCompressed = Helper.compressImageIfNeeded(resource); + imageView.setImageBitmap(resource); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + imageView.setTransitionName(attachment.getUrl()); + ActivityCompat.startPostponedEnterTransition((Activity)context); + } + if (bgColor != -1) { + media_fragment_container.setBackgroundColor(bgColor); + } Glide.with(context) .asBitmap() .load(url).into( @@ -244,6 +247,9 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl break; case "video": case "gifv": + if (bgColor != -1) { + media_fragment_container.setBackgroundColor(bgColor); + } pbar_inf.setIndeterminate(false); pbar_inf.setScaleY(3f); try { @@ -276,6 +282,9 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl player.setPlayWhenReady(true); break; case "web": + if (bgColor != -1) { + media_fragment_container.setBackgroundColor(bgColor); + } loader.setVisibility(View.GONE); CustomWebview webview_video = Helper.initializeWebview((Activity) context, R.id.webview_video, null); webview_video.setVisibility(View.VISIBLE); @@ -312,6 +321,9 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl webview_video.loadUrl(attachment.getUrl()); break; case "audio": + if (bgColor != -1) { + media_fragment_container.setBackgroundColor(bgColor); + } loader.setVisibility(View.GONE); content_audio.setVisibility(View.VISIBLE); int color = getResources().getColor(R.color.mastodonC1); diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index a1e3643bd..f7a094222 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,4 +1,4 @@ - + @@ -90,6 +90,7 @@ @style/Fedilab.PopupMenu.Dark @drawable/menu_selector @style/Cyanea.PopupMenu.Dark + true @@ -163,6 +165,7 @@ @drawable/menu_selector true @android:color/transparent + true