From a5da507b58da3b0347ef0ff4ad04b2c7e28ad84b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 10 Jul 2015 13:48:14 +0300 Subject: add separate drawables for youtube and video links, better cover drawable --- .../main/java/org/fox/ttrss/HeadlinesFragment.java | 41 ++++++++++++++++++++- .../src/main/res/drawable-hdpi/ic_play_circle.png | Bin 0 -> 889 bytes .../src/main/res/drawable-hdpi/ic_youtube_play.png | Bin 807 -> 686 bytes .../src/main/res/drawable-xhdpi/ic_play_circle.png | Bin 0 -> 1186 bytes .../main/res/drawable-xhdpi/ic_youtube_play.png | Bin 1114 -> 883 bytes .../main/res/drawable-xxhdpi/ic_play_circle.png | Bin 0 -> 1736 bytes .../main/res/drawable-xxhdpi/ic_youtube_play.png | Bin 1476 -> 1233 bytes .../main/res/drawable-xxxhdpi/ic_play_circle.png | Bin 0 -> 2370 bytes .../main/res/drawable-xxxhdpi/ic_youtube_play.png | Bin 2153 -> 1667 bytes .../src/main/res/drawable/flavor_video_play.xml | 15 ++++++++ .../res/drawable/flavor_video_play_youtube.xml | 15 ++++++++ .../src/main/res/layout/headlines_row.xml | 7 ++-- .../src/main/res/layout/headlines_row_unread.xml | 3 +- 13 files changed, 76 insertions(+), 5 deletions(-) create mode 100644 org.fox.ttrss/src/main/res/drawable-hdpi/ic_play_circle.png create mode 100644 org.fox.ttrss/src/main/res/drawable-xhdpi/ic_play_circle.png create mode 100644 org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_play_circle.png create mode 100644 org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_play_circle.png create mode 100644 org.fox.ttrss/src/main/res/drawable/flavor_video_play.xml create mode 100644 org.fox.ttrss/src/main/res/drawable/flavor_video_play_youtube.xml diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index 45fb5480..94cf3c9d 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -74,6 +74,8 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.TimeZone; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class HeadlinesFragment extends Fragment implements OnItemClickListener, OnScrollListener { public static enum ArticlesSelection { ALL, NONE, UNREAD } @@ -1032,6 +1034,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, if (article.articleDoc != null && holder.flavorVideoPlayView != null) { Element video = article.articleDoc.select("video").first(); + Element ytframe = article.articleDoc.select("iframe[src*=youtube.com/embed/]").first(); if (video != null) { try { @@ -1040,7 +1043,9 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, final String streamUri = source.attr("src"); String posterUri = video.attr("poster"); - if (streamUri != null && posterUri != null) { + Log.d(TAG, posterUri); + + if (streamUri.length() > 0 && posterUri.length() > 0) { if (!posterUri.equals(holder.flavorImageView.getTag())) { holder.flavorImageView.setTag(posterUri); @@ -1055,6 +1060,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, holder.flavorImageLoadingBar.setVisibility(View.GONE); holder.flavorImageView.setVisibility(View.VISIBLE); holder.flavorVideoPlayView.setVisibility(View.VISIBLE); + holder.flavorVideoPlayView.setImageResource(R.drawable.flavor_video_play); ViewCompat.setTransitionName(holder.flavorImageView, "TRANSITION:ARTICLE_VIDEO_PLAYER"); @@ -1082,6 +1088,39 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, e.printStackTrace(); videoFound = false; } + } else if (ytframe != null) { + // thumb: http://img.youtube.com/vi/{VID}/mqdefault.jpg + String srcEmbed = ytframe.attr("src"); + + if (srcEmbed.length() > 0) { + Pattern pattern = Pattern.compile("/embed/([\\w-]+)"); + Matcher matcher = pattern.matcher(srcEmbed); + + if (matcher.find()) { + String vid = matcher.group(1); + String thumbUri = "http://img.youtube.com/vi/"+vid+"/mqdefault.jpg"; + final String videoUri = "https://youtu.be/" + vid; + + videoFound = true; + + holder.flavorImageLoadingBar.setVisibility(View.GONE); + holder.flavorImageView.setVisibility(View.VISIBLE); + holder.flavorVideoPlayView.setVisibility(View.VISIBLE); + holder.flavorVideoPlayView.setImageResource(R.drawable.flavor_video_play_youtube); + + ImageAware imageAware = new ImageViewAware(holder.flavorImageView, false); + m_imageLoader.displayImage(thumbUri, imageAware, displayImageOptions); + + holder.flavorImageView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(Intent.ACTION_VIEW, + Uri.parse(videoUri)); + startActivity(intent); + } + }); + } + } } } diff --git a/org.fox.ttrss/src/main/res/drawable-hdpi/ic_play_circle.png b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_play_circle.png new file mode 100644 index 00000000..51deabcc Binary files /dev/null and b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_play_circle.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-hdpi/ic_youtube_play.png b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_youtube_play.png index 0005446b..0097d4b9 100644 Binary files a/org.fox.ttrss/src/main/res/drawable-hdpi/ic_youtube_play.png and b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_youtube_play.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_play_circle.png b/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_play_circle.png new file mode 100644 index 00000000..baef6ebf Binary files /dev/null and b/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_play_circle.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_youtube_play.png b/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_youtube_play.png index 198f6cbb..e0e0cf78 100644 Binary files a/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_youtube_play.png and b/org.fox.ttrss/src/main/res/drawable-xhdpi/ic_youtube_play.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_play_circle.png b/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_play_circle.png new file mode 100644 index 00000000..6f1e3fa3 Binary files /dev/null and b/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_play_circle.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_youtube_play.png b/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_youtube_play.png index 76479288..adb6de98 100644 Binary files a/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_youtube_play.png and b/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_youtube_play.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_play_circle.png b/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_play_circle.png new file mode 100644 index 00000000..a5a85200 Binary files /dev/null and b/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_play_circle.png differ diff --git a/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_youtube_play.png b/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_youtube_play.png index 57058bf6..6f66d9c1 100644 Binary files a/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_youtube_play.png and b/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_youtube_play.png differ diff --git a/org.fox.ttrss/src/main/res/drawable/flavor_video_play.xml b/org.fox.ttrss/src/main/res/drawable/flavor_video_play.xml new file mode 100644 index 00000000..bbc3c1e2 --- /dev/null +++ b/org.fox.ttrss/src/main/res/drawable/flavor_video_play.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/drawable/flavor_video_play_youtube.xml b/org.fox.ttrss/src/main/res/drawable/flavor_video_play_youtube.xml new file mode 100644 index 00000000..6f57ff0f --- /dev/null +++ b/org.fox.ttrss/src/main/res/drawable/flavor_video_play_youtube.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row.xml b/org.fox.ttrss/src/main/res/layout/headlines_row.xml index cb7dfde1..330ebd70 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row.xml @@ -93,10 +93,11 @@