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 3220c6381..93868e061 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -16,7 +16,6 @@ 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; @@ -2152,32 +2151,18 @@ public class StatusListAdapter extends RecyclerView.Adapter { String url = finalSrc; if (url != null) { @@ -2351,12 +2329,27 @@ public class StatusListAdapter extends RecyclerView.Adapter attachmentArrayList = new ArrayList<>(); + attachmentArrayList.add(attachment); + intent.putParcelableArrayListExtra("mediaArray", attachmentArrayList); + b.putInt("bgcolor", context.getResources().getColor(R.color.cyanea_primary_dark)); + b.putInt("position", 1); + intent.putExtras(b); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity)context, holder.webview_preview, attachment.getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + }else{ + // start the new activity + context.startActivity(intent); } - notifyStatusChanged(status); }); } else { holder.status_cardview.setVisibility(View.GONE); @@ -3410,10 +3403,8 @@ public class StatusListAdapter extends RecyclerView.Adapter= android.os.Build.VERSION_CODES.LOLLIPOP && attachment.getType().compareTo("image") == 0) { - imageView.setTransitionName(attachment.getText_url()); - options = ActivityOptionsCompat + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat .makeSceneTransitionAnimation((Activity)context, imageView, attachment.getUrl()); // start the new activity context.startActivity(intent, options.toBundle()); @@ -4091,7 +4082,6 @@ public class StatusListAdapter extends RecyclerView.Adapter() { - @Override - public void onResourceReady(@NonNull final Bitmap resource, Transition transition) { - //Bitmap imageCompressed = Helper.compressImageIfNeeded(resource); - imageView.setImageBitmap(resource); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - imageView.setTransitionName(attachment.getUrl()); - scheduleStartPostponedTransition(imageView); - } - if (bgColor != -1) { - media_fragment_container.setBackgroundColor(bgColor); - } - Glide.with(context) - .asBitmap() - .load(url).into( - new CustomTarget() { - @Override - public void onResourceReady(@NonNull final Bitmap resource, Transition transition) { - loader.setVisibility(View.GONE); - Bitmap imageCompressed = Helper.compressImageIfNeeded(resource); - if (imageView.getScale() < 1.1) { - imageView.setImageBitmap(imageCompressed); - } else { - message_ready.setVisibility(View.VISIBLE); - } - message_ready.setOnClickListener(view -> { - imageView.setImageBitmap(imageCompressed); - message_ready.setVisibility(View.GONE); - }); - } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - - } + imageView.setVisibility(View.VISIBLE); + Glide.with(context) + .asBitmap() + .load(preview_url).into( + new CustomTarget() { + @Override + public void onResourceReady(@NonNull final Bitmap resource, Transition transition) { + //Bitmap imageCompressed = Helper.compressImageIfNeeded(resource); + imageView.setImageBitmap(resource); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + imageView.setTransitionName(attachment.getUrl()); + scheduleStartPostponedTransition(imageView); + } + if (bgColor != -1) { + media_fragment_container.setBackgroundColor(bgColor); + } + if( attachment.getType().toLowerCase().compareTo("image") == 0 && !attachment.getUrl().endsWith(".gif")) { + pbar_inf.setScaleY(1f); + imageView.setVisibility(View.VISIBLE); + pbar_inf.setIndeterminate(true); + loader.setVisibility(View.VISIBLE); + Glide.with(context) + .asBitmap() + .load(url).into( + new CustomTarget() { + @Override + public void onResourceReady(@NonNull final Bitmap resource, Transition transition) { + loader.setVisibility(View.GONE); + Bitmap imageCompressed = Helper.compressImageIfNeeded(resource); + if (imageView.getScale() < 1.1) { + imageView.setImageBitmap(imageCompressed); + } else { + message_ready.setVisibility(View.VISIBLE); } - ); - } + message_ready.setOnClickListener(view -> { + imageView.setImageBitmap(imageCompressed); + message_ready.setVisibility(View.GONE); + }); + } - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { - } + } + } + ); + }else if (attachment.getType().toLowerCase().compareTo("image") == 0 && attachment.getUrl().endsWith(".gif")) { + loader.setVisibility(View.GONE); + Glide.with(context) + .load(url).into(imageView); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + imageView.setTransitionName(attachment.getUrl()); + scheduleStartPostponedTransition(imageView); } - ); - } else { - loader.setVisibility(View.GONE); - Glide.with(context) - .load(url).into(imageView); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - imageView.setTransitionName(attachment.getUrl()); - scheduleStartPostponedTransition(imageView); + } } + @Override + public void onLoadFailed(@Nullable Drawable errorDrawable){ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + imageView.setTransitionName(attachment.getUrl()); + scheduleStartPostponedTransition(imageView); + } + } + + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { + + } } - break; + ); + switch (type.toLowerCase()) { case "video": case "gifv": + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + imageView.setTransitionName(attachment.getUrl()); + scheduleStartPostponedTransition(imageView); + imageView.setVisibility(View.GONE); + } if (bgColor != -1) { media_fragment_container.setBackgroundColor(bgColor); } @@ -286,6 +302,7 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl player.setRepeatMode(Player.REPEAT_MODE_ONE); videoView.setPlayer(player); loader.setVisibility(View.GONE); + imageView.setVisibility(View.GONE); player.prepare(videoSource); player.setPlayWhenReady(true); break; @@ -294,14 +311,14 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl media_fragment_container.setBackgroundColor(bgColor); } loader.setVisibility(View.GONE); - CustomWebview webview_video = Helper.initializeWebview((Activity) context, R.id.webview_video, null); + imageView.setVisibility(View.GONE); + webview_video = Helper.initializeWebview((Activity) context, R.id.webview_video, rootView); webview_video.setVisibility(View.VISIBLE); - FrameLayout webview_container = rootView.findViewById(R.id.main_media_frame); - final ViewGroup videoLayout = rootView.findViewById(R.id.videoLayout); + webview_container = rootView.findViewById(R.id.main_media_frame); + videoLayout = rootView.findViewById(R.id.videoLayout); MastalabWebChromeClient mastalabWebChromeClient = new MastalabWebChromeClient((Activity) context, webview_video, webview_container, videoLayout); mastalabWebChromeClient.setOnToggledFullscreen(fullscreen -> { - if (fullscreen) { videoLayout.setVisibility(View.VISIBLE); WindowManager.LayoutParams attrs = ((Activity) context).getWindow().getAttributes(); @@ -333,6 +350,7 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl media_fragment_container.setBackgroundColor(bgColor); } loader.setVisibility(View.GONE); + imageView.setVisibility(View.GONE); content_audio.setVisibility(View.VISIBLE); int color = getResources().getColor(R.color.mastodonC1); visualizerView = new GLAudioVisualizationView.Builder(context) @@ -478,6 +496,9 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl if (playeraudio != null) { playeraudio.pause(); } + if( webview_video != null) { + webview_video.onPause(); + } try { visualizerView.onPause(); } catch (Exception ignored) { @@ -498,6 +519,9 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl } } catch (Exception ignored) { } + if( webview_video != null) { + webview_video.destroy(); + } if (timer != null) { timer.cancel(); timer = null; @@ -524,6 +548,9 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl visualizerView.onResume(); } catch (Exception ignored) { } + if( webview_video != null) { + webview_video.onResume(); + } if (slidrInterface == null && rootView != null) { slidrInterface = Slidr.replace(rootView.findViewById(R.id.media_fragment_container), new SlidrConfig.Builder().sensitivity(1f) .scrimColor(Color.BLACK) @@ -542,6 +569,26 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl @Override public void onSlideChange(float percent) { if( percent < 0.80 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + + if( imageView != null) { + imageView.setVisibility(View.VISIBLE); + } + if(content_audio != null) { + content_audio.setVisibility(View.GONE); + } + if( videoView != null) { + videoView.setVisibility(View.GONE); + } + if( webview_video != null) { + webview_video.setVisibility(View.GONE); + webview_video.destroy(); + } + if( webview_container != null) { + webview_container.setVisibility(View.GONE); + } + if( videoLayout != null) { + videoLayout.setVisibility(View.GONE); + } ActivityCompat.finishAfterTransition((AppCompatActivity) context); } diff --git a/app/src/main/res/layout/drawer_status.xml b/app/src/main/res/layout/drawer_status.xml index d2b335f54..e7c058a13 100644 --- a/app/src/main/res/layout/drawer_status.xml +++ b/app/src/main/res/layout/drawer_status.xml @@ -555,11 +555,6 @@ - - - - - - @@ -49,6 +50,12 @@ android:layout_height="match_parent" android:visibility="gone" /> +