Some tests

This commit is contained in:
Thomas 2020-06-24 21:37:38 +02:00
parent f097ac0854
commit a67c4170e8
7 changed files with 144 additions and 124 deletions

View File

@ -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<RecyclerView.ViewHol
if (status.getReblog() == null) {
if (status.getWebviewURL() != null) {
String url = status.getWebviewURL().replaceAll("&amp;", "&");
try {
holder.status_cardview_webview.loadUrl(url);
} catch (Exception e) {
e.printStackTrace();
}
holder.status_cardview_webview.setVisibility(View.VISIBLE);
holder.status_cardview_video.setVisibility(View.VISIBLE);
holder.webview_preview.setVisibility(View.GONE);
} else {
holder.status_cardview_webview.setVisibility(View.GONE);
holder.status_cardview_video.setVisibility(View.GONE);
holder.webview_preview.setVisibility(View.VISIBLE);
}
} else {
if (status.getReblog().getWebviewURL() != null) {
String url = status.getReblog().getWebviewURL().replaceAll("&amp;", "&");
try {
holder.status_cardview_webview.loadUrl(url);
} catch (Exception e) {
e.printStackTrace();
}
holder.status_cardview_webview.setVisibility(View.VISIBLE);
holder.status_cardview_video.setVisibility(View.VISIBLE);
holder.webview_preview.setVisibility(View.GONE);
} else {
holder.status_cardview_webview.setVisibility(View.GONE);
holder.status_cardview_video.setVisibility(View.GONE);
holder.webview_preview.setVisibility(View.VISIBLE);
}
@ -2309,6 +2294,7 @@ public class StatusListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
Helper.openBrowser(context, url);
});
} else if (card.getType().toLowerCase().equals("video") && (display_video_preview || (type == RetrieveFeedsAsyncTask.Type.CONTEXT && viewHolder.getAdapterPosition() == conversationPosition))) {
Glide.with(holder.status_cardview_image.getContext())
.load(card.getImage())
.apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10)))
@ -2316,10 +2302,7 @@ public class StatusListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
holder.status_cardview.setVisibility(View.GONE);
holder.status_cardview_video.setVisibility(View.VISIBLE);
String user_agent = sharedpreferences.getString(Helper.SET_CUSTOM_USER_AGENT, Helper.USER_AGENT);
if (user_agent != null) {
holder.status_cardview_webview.getSettings().setUserAgentString(user_agent);
}
holder.status_cardview_webview.getSettings().setJavaScriptEnabled(true);
String html = card.getHtml();
String src = card.getUrl();
if (html != null) {
@ -2328,12 +2311,7 @@ public class StatusListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
src = matcher.group(1);
}
final String finalSrc = src;
holder.status_cardview_webview.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
holder.status_cardview_video.setVisibility(View.GONE);
}
});
holder.webview_preview.setOnClickListener(v -> {
String url = finalSrc;
if (url != null) {
@ -2351,12 +2329,27 @@ public class StatusListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
}
}
}
if (status.getReblog() == null) {
status.setWebviewURL(url);
} else {
status.getReblog().setWebviewURL(url);
Intent intent = new Intent(context, SlideMediaActivity.class);
Bundle b = new Bundle();
Attachment attachment = new Attachment();
attachment.setType("web");
attachment.setUrl(url);
attachment.setPreview_url(card.getImage());
ArrayList<Attachment> 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<RecyclerView.ViewHol
b.putInt("bgcolor", context.getResources().getColor(R.color.cyanea_primary_dark));
b.putInt("position", finalPosition);
intent.putExtras(b);
ActivityOptionsCompat options = null;
if (android.os.Build.VERSION.SDK_INT >= 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<RecyclerView.ViewHol
ImageView status_cardview_image;
TextView status_cardview_title, status_cardview_content, status_cardview_url;
FrameLayout status_cardview_video;
CustomWebview status_cardview_webview;
ImageView hide_preview, hide_preview_h;
TextView status_toot_app;
RelativeLayout webview_preview;
@ -4205,8 +4195,6 @@ public class StatusListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
status_cardview_content = itemView.findViewById(R.id.status_cardview_content);
status_cardview_url = itemView.findViewById(R.id.status_cardview_url);
status_cardview_video = itemView.findViewById(R.id.status_cardview_video);
status_cardview_webview = Helper.initializeWebview((Activity) context, R.id.status_cardview_webview, itemView);
status_cardview_webview.getSettings().setJavaScriptEnabled(true);
hide_preview = itemView.findViewById(R.id.hide_preview);
hide_preview_h = itemView.findViewById(R.id.hide_preview_h);
status_toot_app = itemView.findViewById(R.id.status_toot_app);

View File

@ -119,6 +119,11 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl
private boolean swipeEnabled;
private int bgColor;
private RelativeLayout media_fragment_container;
private RelativeLayout content_audio;
private PlayerView videoView;
private CustomWebview webview_video;
private FrameLayout webview_container;
private RelativeLayout videoLayout;
public MediaSliderFragment() {
}
@ -138,7 +143,7 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl
swipeEnabled = true;
message_ready = rootView.findViewById(R.id.message_ready);
RelativeLayout content_audio = rootView.findViewById(R.id.content_audio);
content_audio = rootView.findViewById(R.id.content_audio);
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
@ -148,7 +153,7 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl
ImageView next = rootView.findViewById(R.id.media_next);
imageView = rootView.findViewById(R.id.media_picture);
PlayerView videoView = rootView.findViewById(R.id.media_video);
videoView = rootView.findViewById(R.id.media_video);
if (theme == Helper.THEME_BLACK) {
changeDrawableColor(context, prev, R.color.dark_icon);
changeDrawableColor(context, next, R.color.dark_icon);
@ -187,74 +192,85 @@ public class MediaSliderFragment extends Fragment implements MediaPlayer.OnCompl
attachment.setType(type);
}
media_fragment_container = rootView.findViewById(R.id.media_fragment_container);
switch (type.toLowerCase()) {
case "image":
pbar_inf.setScaleY(1f);
imageView.setVisibility(View.VISIBLE);
pbar_inf.setIndeterminate(true);
loader.setVisibility(View.VISIBLE);
if (!url.endsWith(".gif")) {
Glide.with(context)
.asBitmap()
.load(preview_url).into(
new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull final Bitmap resource, Transition<? super Bitmap> 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<Bitmap>() {
@Override
public void onResourceReady(@NonNull final Bitmap resource, Transition<? super Bitmap> 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<Bitmap>() {
@Override
public void onResourceReady(@NonNull final Bitmap resource, Transition<? super Bitmap> 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<Bitmap>() {
@Override
public void onResourceReady(@NonNull final Bitmap resource, Transition<? super Bitmap> 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);
}

View File

@ -555,11 +555,6 @@
</RelativeLayout>
<app.fedilab.android.webview.CustomWebview
android:id="@+id/status_cardview_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</FrameLayout>
<RelativeLayout

View File

@ -479,12 +479,6 @@
android:contentDescription="@string/play_video"
android:src="@drawable/ic_play_arrow" />
</RelativeLayout>
<app.fedilab.android.webview.CustomWebview
android:id="@+id/status_cardview_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</FrameLayout>
<RelativeLayout

View File

@ -431,11 +431,6 @@
android:src="@drawable/ic_play_arrow" />
</RelativeLayout>
<app.fedilab.android.webview.CustomWebview
android:id="@+id/status_cardview_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</FrameLayout>
<RelativeLayout

View File

@ -412,12 +412,6 @@
android:src="@drawable/ic_play_arrow" />
</RelativeLayout>
<app.fedilab.android.webview.CustomWebview
android:id="@+id/status_cardview_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</FrameLayout>
<RelativeLayout

View File

@ -39,6 +39,7 @@
</RelativeLayout>
<FrameLayout
android:id="@+id/main_media_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true">
@ -49,6 +50,12 @@
android:layout_height="match_parent"
android:visibility="gone" />
</FrameLayout>
<RelativeLayout
android:id="@+id/videoLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:visibility="gone" />
<FrameLayout
android:id="@+id/media_picture_container"