merge code, and adjust code
|
@ -18,7 +18,6 @@ Project status:
|
||||||
[<img src="screenshots/screenshot_3.png" width=150>](screenshots/screenshot_3.png)
|
[<img src="screenshots/screenshot_3.png" width=150>](screenshots/screenshot_3.png)
|
||||||
[<img src="screenshots/screenshot_4.png" width=150>](screenshots/screenshot_4.png)
|
[<img src="screenshots/screenshot_4.png" width=150>](screenshots/screenshot_4.png)
|
||||||
[<img src="screenshots/screenshot_5.png" width=150>](screenshots/screenshot_5.png)
|
[<img src="screenshots/screenshot_5.png" width=150>](screenshots/screenshot_5.png)
|
||||||
[<img src="screenshots/screenshot_6.png" width=250>](screenshots/screenshot_6.png)
|
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 23
|
compileSdkVersion 23
|
||||||
buildToolsVersion "23.0.2"
|
buildToolsVersion '23.0.2'
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "org.schabi.newpipe"
|
applicationId "org.schabi.newpipe"
|
||||||
|
@ -24,6 +24,10 @@ android {
|
||||||
// but continue the build even when errors are found:
|
// but continue the build even when errors are found:
|
||||||
abortOnError false
|
abortOnError false
|
||||||
}
|
}
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_1_7
|
||||||
|
targetCompatibility JavaVersion.VERSION_1_7
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
@ -31,9 +35,11 @@ dependencies {
|
||||||
compile 'com.android.support:appcompat-v7:23.1.1'
|
compile 'com.android.support:appcompat-v7:23.1.1'
|
||||||
compile 'com.android.support:support-v4:23.1.1'
|
compile 'com.android.support:support-v4:23.1.1'
|
||||||
compile 'com.android.support:design:23.1.1'
|
compile 'com.android.support:design:23.1.1'
|
||||||
compile 'com.android.support:cardview-v7:23.1.1'
|
|
||||||
compile 'com.android.support:recyclerview-v7:23.1.1'
|
compile 'com.android.support:recyclerview-v7:23.1.1'
|
||||||
compile 'org.jsoup:jsoup:1.8.3'
|
compile 'org.jsoup:jsoup:1.8.3'
|
||||||
compile 'org.mozilla:rhino:1.7.7'
|
compile 'org.mozilla:rhino:1.7.7'
|
||||||
compile 'info.guardianproject.netcipher:netcipher:1.2'
|
compile 'info.guardianproject.netcipher:netcipher:1.2'
|
||||||
|
compile 'de.hdodenhof:circleimageview:2.0.0'
|
||||||
|
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
|
||||||
|
compile 'com.github.nirhart:parallaxscroll:1.0'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.schabi.newpipe.services.youtube;
|
package org.schabi.newpipe.services.youtube;
|
||||||
|
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import org.schabi.newpipe.Downloader;
|
import org.schabi.newpipe.Downloader;
|
||||||
import org.schabi.newpipe.crawler.CrawlingException;
|
import org.schabi.newpipe.crawler.CrawlingException;
|
||||||
|
|
|
@ -16,7 +16,8 @@
|
||||||
tools:ignore="AllowBackup">
|
tools:ignore="AllowBackup">
|
||||||
<activity
|
<activity
|
||||||
android:name=".VideoItemListActivity"
|
android:name=".VideoItemListActivity"
|
||||||
android:label="@string/app_name">
|
android:label="@string/app_name"
|
||||||
|
android:configChanges="orientation|screenSize">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
|
@ -26,7 +27,9 @@
|
||||||
<activity
|
<activity
|
||||||
android:name=".VideoItemDetailActivity"
|
android:name=".VideoItemDetailActivity"
|
||||||
android:label="@string/title_videoitem_detail"
|
android:label="@string/title_videoitem_detail"
|
||||||
android:theme="@style/AppTheme">
|
android:theme="@style/AppTheme"
|
||||||
|
android:configChanges="orientation|screenSize"
|
||||||
|
android:screenOrientation="portrait">
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="android.support.PARENT_ACTIVITY"
|
android:name="android.support.PARENT_ACTIVITY"
|
||||||
android:value=".VideoItemListActivity" />
|
android:value=".VideoItemListActivity" />
|
||||||
|
|
|
@ -15,6 +15,7 @@ import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.schabi.newpipe.crawler.MediaFormat;
|
import org.schabi.newpipe.crawler.MediaFormat;
|
||||||
import org.schabi.newpipe.crawler.VideoInfo;
|
import org.schabi.newpipe.crawler.VideoInfo;
|
||||||
|
@ -24,7 +25,7 @@ import java.util.List;
|
||||||
/**
|
/**
|
||||||
* Created by Christian Schabesberger on 18.08.15.
|
* Created by Christian Schabesberger on 18.08.15.
|
||||||
*
|
*
|
||||||
* Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org>
|
* Copyright (C) Christian Schabesberger 2015 <chris.schabesberger@mailbox.org>
|
||||||
* DetailsMenuHandler.java is part of NewPipe.
|
* DetailsMenuHandler.java is part of NewPipe.
|
||||||
*
|
*
|
||||||
* NewPipe is free software: you can redistribute it and/or modify
|
* NewPipe is free software: you can redistribute it and/or modify
|
||||||
|
@ -86,7 +87,7 @@ class ActionBarHandler {
|
||||||
serviceId = id;
|
serviceId = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSetVideoThumbnail(Bitmap bitmap) {
|
public void setVideoThumbnail(Bitmap bitmap) {
|
||||||
videoThumbnail = bitmap;
|
videoThumbnail = bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,7 +328,6 @@ class ActionBarHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void playAudio() {
|
public void playAudio() {
|
||||||
|
|
||||||
boolean externalAudioPlayer = PreferenceManager.getDefaultSharedPreferences(activity)
|
boolean externalAudioPlayer = PreferenceManager.getDefaultSharedPreferences(activity)
|
||||||
.getBoolean(activity.getString(R.string.use_external_audio_player_key), false);
|
.getBoolean(activity.getString(R.string.use_external_audio_player_key), false);
|
||||||
Intent intent;
|
Intent intent;
|
||||||
|
|
|
@ -5,6 +5,9 @@ import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
|
||||||
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||||
|
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
||||||
|
|
||||||
import info.guardianproject.netcipher.NetCipher;
|
import info.guardianproject.netcipher.NetCipher;
|
||||||
import info.guardianproject.netcipher.proxy.OrbotHelper;
|
import info.guardianproject.netcipher.proxy.OrbotHelper;
|
||||||
|
|
||||||
|
@ -34,6 +37,10 @@ public class App extends Application {
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
|
||||||
|
// Initialize image loader
|
||||||
|
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).build();
|
||||||
|
ImageLoader.getInstance().init(config);
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
if(prefs.getBoolean(getString(R.string.use_tor_key), false)) {
|
if(prefs.getBoolean(getString(R.string.use_tor_key), false)) {
|
||||||
OrbotHelper.requestStartTor(this);
|
OrbotHelper.requestStartTor(this);
|
||||||
|
|
|
@ -117,6 +117,7 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
||||||
private WifiManager.WifiLock wifiLock;
|
private WifiManager.WifiLock wifiLock;
|
||||||
private Bitmap videoThumbnail = null;
|
private Bitmap videoThumbnail = null;
|
||||||
private NotificationCompat.Builder noteBuilder;
|
private NotificationCompat.Builder noteBuilder;
|
||||||
|
private Notification note;
|
||||||
|
|
||||||
public PlayerThread(String src, String title, BackgroundPlayer owner) {
|
public PlayerThread(String src, String title, BackgroundPlayer owner) {
|
||||||
this.source = src;
|
this.source = src;
|
||||||
|
@ -174,7 +175,7 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
||||||
filter.addAction(ACTION_STOP);
|
filter.addAction(ACTION_STOP);
|
||||||
registerReceiver(broadcastReceiver, filter);
|
registerReceiver(broadcastReceiver, filter);
|
||||||
|
|
||||||
Notification note = buildNotification();
|
note = buildNotification();
|
||||||
|
|
||||||
startForeground(noteID, note);
|
startForeground(noteID, note);
|
||||||
|
|
||||||
|
@ -204,11 +205,21 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare
|
||||||
if(action.equals(ACTION_PLAYPAUSE)) {
|
if(action.equals(ACTION_PLAYPAUSE)) {
|
||||||
if(mediaPlayer.isPlaying()) {
|
if(mediaPlayer.isPlaying()) {
|
||||||
mediaPlayer.pause();
|
mediaPlayer.pause();
|
||||||
|
note.contentView.setImageViewResource(R.id.backgroundPlayPause, R.drawable.ic_play_circle_filled_white_24dp);
|
||||||
|
if(android.os.Build.VERSION.SDK_INT >=16){
|
||||||
|
note.bigContentView.setImageViewResource(R.id.backgroundPlayPause, R.drawable.ic_play_circle_filled_white_24dp);
|
||||||
|
}
|
||||||
|
noteMgr.notify(noteID, note);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//reacquire CPU lock after auto-releasing it on pause
|
//reacquire CPU lock after auto-releasing it on pause
|
||||||
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
|
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
|
||||||
mediaPlayer.start();
|
mediaPlayer.start();
|
||||||
|
note.contentView.setImageViewResource(R.id.backgroundPlayPause, R.drawable.ic_pause_white_24dp);
|
||||||
|
if(android.os.Build.VERSION.SDK_INT >=16){
|
||||||
|
note.bigContentView.setImageViewResource(R.id.backgroundPlayPause, R.drawable.ic_pause_white_24dp);
|
||||||
|
}
|
||||||
|
noteMgr.notify(noteID, note);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(action.equals(ACTION_STOP)) {
|
else if(action.equals(ACTION_STOP)) {
|
||||||
|
|
|
@ -8,6 +8,8 @@ import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import org.schabi.newpipe.crawler.VideoPreviewInfo;
|
import org.schabi.newpipe.crawler.VideoPreviewInfo;
|
||||||
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
||||||
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Christian Schabesberger on 24.10.15.
|
* Created by Christian Schabesberger on 24.10.15.
|
||||||
|
@ -31,6 +33,8 @@ import org.schabi.newpipe.crawler.VideoPreviewInfo;
|
||||||
|
|
||||||
class VideoInfoItemViewCreator {
|
class VideoInfoItemViewCreator {
|
||||||
private final LayoutInflater inflater;
|
private final LayoutInflater inflater;
|
||||||
|
private ImageLoader imageLoader = ImageLoader.getInstance();
|
||||||
|
private DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder().cacheInMemory(true).build();
|
||||||
|
|
||||||
public VideoInfoItemViewCreator(LayoutInflater inflater) {
|
public VideoInfoItemViewCreator(LayoutInflater inflater) {
|
||||||
this.inflater = inflater;
|
this.inflater = inflater;
|
||||||
|
@ -46,6 +50,7 @@ class VideoInfoItemViewCreator {
|
||||||
holder.itemUploaderView = (TextView) convertView.findViewById(R.id.itemUploaderView);
|
holder.itemUploaderView = (TextView) convertView.findViewById(R.id.itemUploaderView);
|
||||||
holder.itemDurationView = (TextView) convertView.findViewById(R.id.itemDurationView);
|
holder.itemDurationView = (TextView) convertView.findViewById(R.id.itemDurationView);
|
||||||
holder.itemUploadDateView = (TextView) convertView.findViewById(R.id.itemUploadDateView);
|
holder.itemUploadDateView = (TextView) convertView.findViewById(R.id.itemUploadDateView);
|
||||||
|
holder.itemViewCountView = (TextView) convertView.findViewById(R.id.itemViewCountView);
|
||||||
convertView.setTag(holder);
|
convertView.setTag(holder);
|
||||||
} else {
|
} else {
|
||||||
holder = (ViewHolder) convertView.getTag();
|
holder = (ViewHolder) convertView.getTag();
|
||||||
|
@ -59,18 +64,31 @@ class VideoInfoItemViewCreator {
|
||||||
holder.itemVideoTitleView.setText(info.title);
|
holder.itemVideoTitleView.setText(info.title);
|
||||||
holder.itemUploaderView.setText(info.uploader);
|
holder.itemUploaderView.setText(info.uploader);
|
||||||
holder.itemDurationView.setText(info.duration);
|
holder.itemDurationView.setText(info.duration);
|
||||||
|
holder.itemViewCountView.setText(shortViewCount(info.view_count));
|
||||||
if(!info.upload_date.isEmpty()) {
|
if(!info.upload_date.isEmpty()) {
|
||||||
holder.itemUploadDateView.setText(info.upload_date);
|
holder.itemUploadDateView.setText(info.upload_date+" • ");
|
||||||
} else {
|
|
||||||
holder.itemUploadDateView.setText(Localization.localizeViewCount(info.view_count, context));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
imageLoader.displayImage(info.thumbnail_url, holder.itemThumbnailView, displayImageOptions);
|
||||||
|
|
||||||
return convertView;
|
return convertView;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ViewHolder {
|
private class ViewHolder {
|
||||||
public ImageView itemThumbnailView;
|
public ImageView itemThumbnailView;
|
||||||
public TextView itemVideoTitleView, itemUploaderView, itemDurationView, itemUploadDateView;
|
public TextView itemVideoTitleView, itemUploaderView, itemDurationView, itemUploadDateView, itemViewCountView;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String shortViewCount(Long view_count){
|
||||||
|
if(view_count >= 1000000000){
|
||||||
|
return Long.toString(view_count/1000000000)+"B views";
|
||||||
|
}else if(view_count>=1000000){
|
||||||
|
return Long.toString(view_count/1000000)+"M views";
|
||||||
|
}else if(view_count>=1000){
|
||||||
|
return Long.toString(view_count/1000)+"K views";
|
||||||
|
}else {
|
||||||
|
return Long.toString(view_count)+" views";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package org.schabi.newpipe;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.TypedArray;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.graphics.Point;
|
import android.graphics.Point;
|
||||||
|
@ -20,11 +20,13 @@ import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
@ -32,16 +34,19 @@ import android.view.MenuItem;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
|
||||||
import java.nio.charset.MalformedInputException;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
||||||
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||||
|
import com.nostra13.universalimageloader.core.assist.FailReason;
|
||||||
|
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import org.schabi.newpipe.crawler.CrawlingException;
|
|
||||||
import org.schabi.newpipe.crawler.ParsingException;
|
import org.schabi.newpipe.crawler.ParsingException;
|
||||||
|
import org.schabi.newpipe.crawler.ServiceList;
|
||||||
import org.schabi.newpipe.crawler.VideoPreviewInfo;
|
import org.schabi.newpipe.crawler.VideoPreviewInfo;
|
||||||
import org.schabi.newpipe.crawler.VideoExtractor;
|
import org.schabi.newpipe.crawler.VideoExtractor;
|
||||||
import org.schabi.newpipe.crawler.ServiceList;
|
|
||||||
import org.schabi.newpipe.crawler.StreamingService;
|
import org.schabi.newpipe.crawler.StreamingService;
|
||||||
import org.schabi.newpipe.crawler.VideoInfo;
|
import org.schabi.newpipe.crawler.VideoInfo;
|
||||||
import org.schabi.newpipe.crawler.services.youtube.YoutubeVideoExtractor;
|
import org.schabi.newpipe.crawler.services.youtube.YoutubeVideoExtractor;
|
||||||
|
@ -91,6 +96,12 @@ public class VideoItemDetailFragment extends Fragment {
|
||||||
private FloatingActionButton playVideoButton;
|
private FloatingActionButton playVideoButton;
|
||||||
private final Point initialThumbnailPos = new Point(0, 0);
|
private final Point initialThumbnailPos = new Point(0, 0);
|
||||||
|
|
||||||
|
|
||||||
|
private ImageLoader imageLoader = ImageLoader.getInstance();
|
||||||
|
private DisplayImageOptions displayImageOptions =
|
||||||
|
new DisplayImageOptions.Builder().cacheInMemory(true).build();
|
||||||
|
|
||||||
|
|
||||||
public interface OnInvokeCreateOptionsMenuListener {
|
public interface OnInvokeCreateOptionsMenuListener {
|
||||||
void createOptionsMenu();
|
void createOptionsMenu();
|
||||||
}
|
}
|
||||||
|
@ -113,31 +124,8 @@ public class VideoItemDetailFragment extends Fragment {
|
||||||
try {
|
try {
|
||||||
videoExtractor = service.getExtractorInstance(videoUrl, new Downloader());
|
videoExtractor = service.getExtractorInstance(videoUrl, new Downloader());
|
||||||
VideoInfo videoInfo = VideoInfo.getVideoInfo(videoExtractor, new Downloader());
|
VideoInfo videoInfo = VideoInfo.getVideoInfo(videoExtractor, new Downloader());
|
||||||
|
|
||||||
h.post(new VideoResultReturnedRunnable(videoInfo));
|
h.post(new VideoResultReturnedRunnable(videoInfo));
|
||||||
h.post(new SetThumbnailRunnable(
|
|
||||||
//todo: make bitmaps not bypass tor
|
|
||||||
BitmapFactory.decodeStream(
|
|
||||||
new URL(videoInfo.thumbnail_url)
|
|
||||||
.openConnection()
|
|
||||||
.getInputStream()),
|
|
||||||
SetThumbnailRunnable.VIDEO_THUMBNAIL));
|
|
||||||
h.post(new SetThumbnailRunnable(
|
|
||||||
BitmapFactory.decodeStream(
|
|
||||||
new URL(videoInfo.uploader_thumbnail_url)
|
|
||||||
.openConnection()
|
|
||||||
.getInputStream()),
|
|
||||||
SetThumbnailRunnable.CHANNEL_THUMBNAIL));
|
|
||||||
if (showNextVideoItem) {
|
|
||||||
h.post(new SetThumbnailRunnable(
|
|
||||||
BitmapFactory.decodeStream(
|
|
||||||
new URL(videoInfo.nextVideo.thumbnail_url)
|
|
||||||
.openConnection()
|
|
||||||
.getInputStream()),
|
|
||||||
SetThumbnailRunnable.NEXT_VIDEO_THUMBNAIL));
|
|
||||||
}
|
|
||||||
} catch (MalformedInputException e) {
|
|
||||||
postNewErrorToast(h, R.string.could_not_load_thumbnails);
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
postNewErrorToast(h, R.string.network_error);
|
postNewErrorToast(h, R.string.network_error);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -186,52 +174,22 @@ public class VideoItemDetailFragment extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SetThumbnailRunnable implements Runnable {
|
private class ThumbnailLoadingListener implements ImageLoadingListener {
|
||||||
public static final int VIDEO_THUMBNAIL = 1;
|
|
||||||
public static final int CHANNEL_THUMBNAIL = 2;
|
|
||||||
public static final int NEXT_VIDEO_THUMBNAIL = 3;
|
|
||||||
private final Bitmap thumbnail;
|
|
||||||
private final int thumbnailId;
|
|
||||||
public SetThumbnailRunnable(Bitmap thumbnail, int id) {
|
|
||||||
this.thumbnail = thumbnail;
|
|
||||||
this.thumbnailId = id;
|
|
||||||
}
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void onLoadingStarted(String imageUri, View view) {}
|
||||||
updateThumbnail(thumbnail, thumbnailId);
|
|
||||||
}
|
@Override
|
||||||
|
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
|
||||||
|
Toast.makeText(VideoItemDetailFragment.this.getActivity(),
|
||||||
|
R.string.could_not_load_thumbnails, Toast.LENGTH_LONG).show();
|
||||||
|
failReason.getCause().printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateThumbnail(Bitmap thumbnail, int id) {
|
@Override
|
||||||
Activity a = getActivity();
|
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {}
|
||||||
ImageView thumbnailView;
|
|
||||||
try {
|
|
||||||
switch (id) {
|
|
||||||
case SetThumbnailRunnable.VIDEO_THUMBNAIL:
|
|
||||||
thumbnailView = (ImageView) a.findViewById(R.id.detailThumbnailView);
|
|
||||||
actionBarHandler.setSetVideoThumbnail(thumbnail);
|
|
||||||
break;
|
|
||||||
case SetThumbnailRunnable.CHANNEL_THUMBNAIL:
|
|
||||||
thumbnailView = (ImageView) a.findViewById(R.id.detailUploaderThumbnailView);
|
|
||||||
break;
|
|
||||||
case SetThumbnailRunnable.NEXT_VIDEO_THUMBNAIL:
|
|
||||||
FrameLayout nextVideoFrame = (FrameLayout) a.findViewById(R.id.detailNextVideoFrame);
|
|
||||||
thumbnailView = (ImageView) nextVideoFrame.findViewById(R.id.itemThumbnailView);
|
|
||||||
currentVideoInfo.nextVideo.thumbnail = thumbnail;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Log.d(TAG, "Error: Thumbnail id not known");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (thumbnailView != null) {
|
@Override
|
||||||
thumbnailView.setImageBitmap(thumbnail);
|
public void onLoadingCancelled(String imageUri, View view) {}
|
||||||
}
|
|
||||||
|
|
||||||
} catch (java.lang.NullPointerException e) {
|
|
||||||
// Not good program design, I know. :/
|
|
||||||
Log.w(TAG, "updateThumbnail(): Fragment closed before thread ended work");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateInfo(VideoInfo info) {
|
private void updateInfo(VideoInfo info) {
|
||||||
|
@ -241,36 +199,62 @@ public class VideoItemDetailFragment extends Fragment {
|
||||||
VideoInfoItemViewCreator videoItemViewCreator =
|
VideoInfoItemViewCreator videoItemViewCreator =
|
||||||
new VideoInfoItemViewCreator(LayoutInflater.from(getActivity()));
|
new VideoInfoItemViewCreator(LayoutInflater.from(getActivity()));
|
||||||
|
|
||||||
RelativeLayout textContentLayout = (RelativeLayout) activity.findViewById(R.id.detailTextContentLayout);
|
RelativeLayout textContentLayout =
|
||||||
TextView videoTitleView = (TextView) activity.findViewById(R.id.detailVideoTitleView);
|
(RelativeLayout) activity.findViewById(R.id.detailTextContentLayout);
|
||||||
|
final TextView videoTitleView =
|
||||||
|
(TextView) activity.findViewById(R.id.detailVideoTitleView);
|
||||||
TextView uploaderView = (TextView) activity.findViewById(R.id.detailUploaderView);
|
TextView uploaderView = (TextView) activity.findViewById(R.id.detailUploaderView);
|
||||||
TextView viewCountView = (TextView) activity.findViewById(R.id.detailViewCountView);
|
TextView viewCountView = (TextView) activity.findViewById(R.id.detailViewCountView);
|
||||||
TextView thumbsUpView = (TextView) activity.findViewById(R.id.detailThumbsUpCountView);
|
TextView thumbsUpView = (TextView) activity.findViewById(R.id.detailThumbsUpCountView);
|
||||||
TextView thumbsDownView = (TextView) activity.findViewById(R.id.detailThumbsDownCountView);
|
TextView thumbsDownView =
|
||||||
|
(TextView) activity.findViewById(R.id.detailThumbsDownCountView);
|
||||||
TextView uploadDateView = (TextView) activity.findViewById(R.id.detailUploadDateView);
|
TextView uploadDateView = (TextView) activity.findViewById(R.id.detailUploadDateView);
|
||||||
TextView descriptionView = (TextView) activity.findViewById(R.id.detailDescriptionView);
|
TextView descriptionView = (TextView) activity.findViewById(R.id.detailDescriptionView);
|
||||||
FrameLayout nextVideoFrame = (FrameLayout) activity.findViewById(R.id.detailNextVideoFrame);
|
FrameLayout nextVideoFrame =
|
||||||
|
(FrameLayout) activity.findViewById(R.id.detailNextVideoFrame);
|
||||||
RelativeLayout nextVideoRootFrame =
|
RelativeLayout nextVideoRootFrame =
|
||||||
(RelativeLayout) activity.findViewById(R.id.detailNextVideoRootLayout);
|
(RelativeLayout) activity.findViewById(R.id.detailNextVideoRootLayout);
|
||||||
|
Button nextVideoButton = (Button) activity.findViewById(R.id.detailNextVideoButton);
|
||||||
progressBar.setVisibility(View.GONE);
|
TextView similarTitle = (TextView) activity.findViewById(R.id.detailSimilarTitle);
|
||||||
|
View topView = activity.findViewById(R.id.detailTopView);
|
||||||
|
|
||||||
View nextVideoView = videoItemViewCreator
|
View nextVideoView = videoItemViewCreator
|
||||||
.getViewFromVideoInfoItem(null, nextVideoFrame, info.nextVideo, getContext());
|
.getViewFromVideoInfoItem(null, nextVideoFrame, info.nextVideo, getContext());
|
||||||
|
|
||||||
|
progressBar.setVisibility(View.GONE);
|
||||||
nextVideoFrame.addView(nextVideoView);
|
nextVideoFrame.addView(nextVideoView);
|
||||||
|
|
||||||
|
initThumbnailViews(info, nextVideoFrame);
|
||||||
Button nextVideoButton = (Button) activity.findViewById(R.id.detailNextVideoButton);
|
|
||||||
Button similarVideosButton = (Button) activity.findViewById(R.id.detailShowSimilarButton);
|
|
||||||
|
|
||||||
textContentLayout.setVisibility(View.VISIBLE);
|
textContentLayout.setVisibility(View.VISIBLE);
|
||||||
playVideoButton.setVisibility(View.VISIBLE);
|
playVideoButton.setVisibility(View.VISIBLE);
|
||||||
if (!showNextVideoItem) {
|
if (!showNextVideoItem) {
|
||||||
nextVideoRootFrame.setVisibility(View.GONE);
|
nextVideoRootFrame.setVisibility(View.GONE);
|
||||||
similarVideosButton.setVisibility(View.GONE);
|
similarTitle.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
videoTitleView.setText(info.title);
|
||||||
|
|
||||||
|
topView.setOnTouchListener(new View.OnTouchListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
|
||||||
|
ImageView arrow = (ImageView) activity.findViewById(R.id.toggleDescriptionView);
|
||||||
|
View extra = activity.findViewById(R.id.detailExtraView);
|
||||||
|
if (extra.getVisibility() == View.VISIBLE) {
|
||||||
|
extra.setVisibility(View.GONE);
|
||||||
|
arrow.setImageResource(R.drawable.arrow_down);
|
||||||
|
} else {
|
||||||
|
extra.setVisibility(View.VISIBLE);
|
||||||
|
arrow.setImageResource(R.drawable.arrow_up);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
uploaderView.setText(info.uploader);
|
||||||
|
actionBarHandler.setChannelName(info.uploader);
|
||||||
|
|
||||||
videoTitleView.setText(info.title);
|
videoTitleView.setText(info.title);
|
||||||
uploaderView.setText(info.uploader);
|
uploaderView.setText(info.uploader);
|
||||||
actionBarHandler.setChannelName(info.uploader);
|
actionBarHandler.setChannelName(info.uploader);
|
||||||
|
@ -314,12 +298,13 @@ public class VideoItemDetailFragment extends Fragment {
|
||||||
VideoItemDetailFragment.ARG_ITEM_ID, currentVideoInfo.nextVideo.id); */
|
VideoItemDetailFragment.ARG_ITEM_ID, currentVideoInfo.nextVideo.id); */
|
||||||
detailIntent.putExtra(
|
detailIntent.putExtra(
|
||||||
VideoItemDetailFragment.VIDEO_URL, currentVideoInfo.nextVideo.webpage_url);
|
VideoItemDetailFragment.VIDEO_URL, currentVideoInfo.nextVideo.webpage_url);
|
||||||
|
|
||||||
detailIntent.putExtra(VideoItemDetailFragment.STREAMING_SERVICE, streamingServiceId);
|
detailIntent.putExtra(VideoItemDetailFragment.STREAMING_SERVICE, streamingServiceId);
|
||||||
startActivity(detailIntent);
|
startActivity(detailIntent);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
textContentLayout.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
initSimilarVideos(videoItemViewCreator);
|
||||||
|
|
||||||
if(autoPlayEnabled) {
|
if(autoPlayEnabled) {
|
||||||
actionBarHandler.playVideo();
|
actionBarHandler.playVideo();
|
||||||
|
@ -330,6 +315,76 @@ public class VideoItemDetailFragment extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initThumbnailViews(VideoInfo info, View nextVideoFrame) {
|
||||||
|
ImageView videoThumbnailView = (ImageView) activity.findViewById(R.id.detailThumbnailView);
|
||||||
|
ImageView uploaderThumb
|
||||||
|
= (ImageView) activity.findViewById(R.id.detailUploaderThumbnailView);
|
||||||
|
ImageView nextVideoThumb =
|
||||||
|
(ImageView) nextVideoFrame.findViewById(R.id.itemThumbnailView);
|
||||||
|
|
||||||
|
imageLoader.displayImage(info.thumbnail_url, videoThumbnailView,
|
||||||
|
displayImageOptions, new ImageLoadingListener() {
|
||||||
|
@Override
|
||||||
|
public void onLoadingStarted(String imageUri, View view) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
|
||||||
|
Toast.makeText(VideoItemDetailFragment.this.getActivity(),
|
||||||
|
R.string.could_not_load_thumbnails, Toast.LENGTH_LONG).show();
|
||||||
|
failReason.getCause().printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
|
||||||
|
actionBarHandler.setVideoThumbnail(loadedImage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadingCancelled(String imageUri, View view) {}
|
||||||
|
});
|
||||||
|
imageLoader.displayImage(info.uploader_thumbnail_url,
|
||||||
|
uploaderThumb, displayImageOptions, new ThumbnailLoadingListener());
|
||||||
|
imageLoader.displayImage(info.nextVideo.thumbnail_url,
|
||||||
|
nextVideoThumb, displayImageOptions, new ThumbnailLoadingListener());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initSimilarVideos(VideoInfoItemViewCreator videoItemViewCreator) {
|
||||||
|
LinearLayout similarLayout = (LinearLayout) activity.findViewById(R.id.similarVideosView);
|
||||||
|
ArrayList<VideoPreviewInfo> similar = new ArrayList<>(currentVideoInfo.relatedVideos);
|
||||||
|
for (final VideoPreviewInfo item : similar) {
|
||||||
|
View similarView = videoItemViewCreator
|
||||||
|
.getViewFromVideoInfoItem(null, similarLayout, item, getContext());
|
||||||
|
|
||||||
|
similarView.setClickable(true);
|
||||||
|
similarView.setFocusable(true);
|
||||||
|
int[] attrs = new int[]{R.attr.selectableItemBackground};
|
||||||
|
TypedArray typedArray = activity.obtainStyledAttributes(attrs);
|
||||||
|
int backgroundResource = typedArray.getResourceId(0, 0);
|
||||||
|
similarView.setBackgroundResource(backgroundResource);
|
||||||
|
typedArray.recycle();
|
||||||
|
|
||||||
|
similarView.setOnTouchListener(new View.OnTouchListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||||
|
Intent detailIntent = new Intent(activity, VideoItemDetailActivity.class);
|
||||||
|
detailIntent.putExtra(VideoItemDetailFragment.VIDEO_URL, item.webpage_url);
|
||||||
|
detailIntent.putExtra(
|
||||||
|
VideoItemDetailFragment.STREAMING_SERVICE, streamingServiceId);
|
||||||
|
startActivity(detailIntent);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
similarLayout.addView(similarView);
|
||||||
|
ImageView rthumb = (ImageView)similarView.findViewById(R.id.itemThumbnailView);
|
||||||
|
imageLoader.displayImage(item.thumbnail_url, rthumb,
|
||||||
|
displayImageOptions, new ThumbnailLoadingListener());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void onErrorBlockedByGema() {
|
private void onErrorBlockedByGema() {
|
||||||
Button backgroundButton = (Button)
|
Button backgroundButton = (Button)
|
||||||
activity.findViewById(R.id.detailVideoThumbnailWindowBackgroundButton);
|
activity.findViewById(R.id.detailVideoThumbnailWindowBackgroundButton);
|
||||||
|
@ -438,21 +493,6 @@ public class VideoItemDetailFragment extends Fragment {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Button similarVideosButton = (Button) activity.findViewById(R.id.detailShowSimilarButton);
|
|
||||||
similarVideosButton.setOnClickListener(new View.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
Intent intent = new Intent(activity, VideoItemListActivity.class);
|
|
||||||
//todo: find more elegant way to do this - converting from List to ArrayList sucks
|
|
||||||
ArrayList<VideoPreviewInfo> toParcel = new ArrayList<>(currentVideoInfo.relatedVideos);
|
|
||||||
//why oh why does the parcelable array put method have to be so damn specific
|
|
||||||
// about the class of its argument?
|
|
||||||
//why not a List<? extends Parcelable>?
|
|
||||||
intent.putParcelableArrayListExtra(VideoItemListActivity.VIDEO_INFO_ITEMS, toParcel);
|
|
||||||
activity.startActivity(intent);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// todo: Fix this workaround (probably with a better design), so that older android
|
// todo: Fix this workaround (probably with a better design), so that older android
|
||||||
// versions don't have problems rendering the thumbnail right.
|
// versions don't have problems rendering the thumbnail right.
|
||||||
if(Build.VERSION.SDK_INT >= 18) {
|
if(Build.VERSION.SDK_INT >= 18) {
|
||||||
|
@ -461,7 +501,8 @@ public class VideoItemDetailFragment extends Fragment {
|
||||||
// This is used to synchronize the thumbnailWindowButton and the playVideoButton
|
// This is used to synchronize the thumbnailWindowButton and the playVideoButton
|
||||||
// inside the ScrollView with the actual size of the thumbnail.
|
// inside the ScrollView with the actual size of the thumbnail.
|
||||||
@Override
|
@Override
|
||||||
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
public void onLayoutChange(View v, int left, int top, int right, int bottom,
|
||||||
|
int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
||||||
RelativeLayout.LayoutParams newWindowLayoutParams =
|
RelativeLayout.LayoutParams newWindowLayoutParams =
|
||||||
(RelativeLayout.LayoutParams) thumbnailWindowLayout.getLayoutParams();
|
(RelativeLayout.LayoutParams) thumbnailWindowLayout.getLayoutParams();
|
||||||
newWindowLayoutParams.height = bottom - top;
|
newWindowLayoutParams.height = bottom - top;
|
||||||
|
|
|
@ -61,8 +61,6 @@ public class VideoItemListFragment extends ListFragment {
|
||||||
|
|
||||||
private Thread searchThread = null;
|
private Thread searchThread = null;
|
||||||
private SearchRunnable searchRunnable = null;
|
private SearchRunnable searchRunnable = null;
|
||||||
private Thread loadThumbsThread = null;
|
|
||||||
private LoadThumbsRunnable loadThumbsRunnable = null;
|
|
||||||
// used to track down if results posted by threads ar still valid
|
// used to track down if results posted by threads ar still valid
|
||||||
private int currentRequestId = -1;
|
private int currentRequestId = -1;
|
||||||
private ListView list;
|
private ListView list;
|
||||||
|
@ -130,7 +128,8 @@ public class VideoItemListFragment extends ListFragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
<<<
|
||||||
private class LoadThumbsRunnable implements Runnable {
|
private class LoadThumbsRunnable implements Runnable {
|
||||||
private final Vector<String> thumbnailUrlList = new Vector<>();
|
private final Vector<String> thumbnailUrlList = new Vector<>();
|
||||||
private final Vector<Boolean> downloadedList;
|
private final Vector<Boolean> downloadedList;
|
||||||
|
@ -187,6 +186,9 @@ public class VideoItemListFragment extends ListFragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=======
|
||||||
|
>>>>>>> 6d1b4652fc98e5c2d5e19b0f98ba38a731137a70
|
||||||
|
*/
|
||||||
public void present(List<VideoPreviewInfo> videoList) {
|
public void present(List<VideoPreviewInfo> videoList) {
|
||||||
mode = PRESENT_VIDEOS_MODE;
|
mode = PRESENT_VIDEOS_MODE;
|
||||||
setListShown(true);
|
setListShown(true);
|
||||||
|
@ -246,10 +248,6 @@ public class VideoItemListFragment extends ListFragment {
|
||||||
try {
|
try {
|
||||||
videoListAdapter.addVideoList(list);
|
videoListAdapter.addVideoList(list);
|
||||||
terminateThreads();
|
terminateThreads();
|
||||||
loadThumbsRunnable = new LoadThumbsRunnable(videoListAdapter.getVideoList(),
|
|
||||||
videoListAdapter.getDownloadedThumbnailList(), currentRequestId);
|
|
||||||
loadThumbsThread = new Thread(loadThumbsRunnable);
|
|
||||||
loadThumbsThread.start();
|
|
||||||
} catch(java.lang.IllegalStateException e) {
|
} catch(java.lang.IllegalStateException e) {
|
||||||
Log.w(TAG, "Trying to set value while activity doesn't exist anymore.");
|
Log.w(TAG, "Trying to set value while activity doesn't exist anymore.");
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
|
@ -260,14 +258,6 @@ public class VideoItemListFragment extends ListFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void terminateThreads() {
|
private void terminateThreads() {
|
||||||
if(loadThumbsRunnable != null && loadThumbsRunnable.isRunning()) {
|
|
||||||
loadThumbsRunnable.terminate();
|
|
||||||
try {
|
|
||||||
loadThumbsThread.join();
|
|
||||||
} catch(Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(searchThread != null) {
|
if(searchThread != null) {
|
||||||
searchRunnable.terminate();
|
searchRunnable.terminate();
|
||||||
// No need to join, since we don't really terminate the thread. We just demand
|
// No need to join, since we don't really terminate the thread. We just demand
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package org.schabi.newpipe;
|
package org.schabi.newpipe;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Bitmap;
|
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -38,7 +37,6 @@ class VideoListAdapter extends BaseAdapter {
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final VideoInfoItemViewCreator viewCreator;
|
private final VideoInfoItemViewCreator viewCreator;
|
||||||
private Vector<VideoPreviewInfo> videoList = new Vector<>();
|
private Vector<VideoPreviewInfo> videoList = new Vector<>();
|
||||||
private Vector<Boolean> downloadedThumbnailList = new Vector<>();
|
|
||||||
private final ListView listView;
|
private final ListView listView;
|
||||||
|
|
||||||
public VideoListAdapter(Context context, VideoItemListFragment videoListFragment) {
|
public VideoListAdapter(Context context, VideoItemListFragment videoListFragment) {
|
||||||
|
@ -51,15 +49,11 @@ class VideoListAdapter extends BaseAdapter {
|
||||||
|
|
||||||
public void addVideoList(List<VideoPreviewInfo> videos) {
|
public void addVideoList(List<VideoPreviewInfo> videos) {
|
||||||
videoList.addAll(videos);
|
videoList.addAll(videos);
|
||||||
for(int i = 0; i < videos.size(); i++) {
|
|
||||||
downloadedThumbnailList.add(false);
|
|
||||||
}
|
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearVideoList() {
|
public void clearVideoList() {
|
||||||
videoList = new Vector<>();
|
videoList = new Vector<>();
|
||||||
downloadedThumbnailList = new Vector<>();
|
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,20 +61,6 @@ class VideoListAdapter extends BaseAdapter {
|
||||||
return videoList;
|
return videoList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateDownloadedThumbnailList(int index) {
|
|
||||||
downloadedThumbnailList.set(index, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector<Boolean> getDownloadedThumbnailList() {
|
|
||||||
return downloadedThumbnailList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setThumbnail(int index, Bitmap thumbnail) {
|
|
||||||
videoList.get(index).thumbnail = thumbnail;
|
|
||||||
downloadedThumbnailList.set(index, true);
|
|
||||||
notifyDataSetChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCount() {
|
public int getCount() {
|
||||||
return videoList.size();
|
return videoList.size();
|
||||||
|
|
|
@ -122,6 +122,15 @@ public class YoutubeSearchEngine implements SearchEngine {
|
||||||
resultItem.upload_date = item.select("div[class=\"yt-lockup-meta\"]").first()
|
resultItem.upload_date = item.select("div[class=\"yt-lockup-meta\"]").first()
|
||||||
.select("li").first()
|
.select("li").first()
|
||||||
.text();
|
.text();
|
||||||
|
|
||||||
|
//todo: test against view_count
|
||||||
|
String viewCountInfo = item.select("div[class=\"yt-lockup-meta\"]").first()
|
||||||
|
.select("li").get(1)
|
||||||
|
.text();
|
||||||
|
viewCountInfo = viewCountInfo.substring(0, viewCountInfo.indexOf(' '));
|
||||||
|
viewCountInfo = viewCountInfo.replaceAll("[,.]", "");
|
||||||
|
resultItem.view_count = Long.parseLong(viewCountInfo);
|
||||||
|
|
||||||
Element te = item.select("div[class=\"yt-thumb video-thumb\"]").first()
|
Element te = item.select("div[class=\"yt-thumb video-thumb\"]").first()
|
||||||
.select("img").first();
|
.select("img").first();
|
||||||
resultItem.thumbnail_url = te.attr("abs:src");
|
resultItem.thumbnail_url = te.attr("abs:src");
|
||||||
|
|
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
|
@ -1,219 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
tools:context=".VideoItemDetailFragment"
|
|
||||||
android:textIsSelectable="true"
|
|
||||||
style="?android:attr/textAppearanceLarge"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:id="@+id/videoitem_detail">
|
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailThumbnailView"
|
|
||||||
android:contentDescription="@string/detail_thumbnail_view_description"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:scaleType="centerCrop"
|
|
||||||
android:adjustViewBounds="true"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:layout_alignParentTop="true"
|
|
||||||
android:background="@android:color/black"
|
|
||||||
android:src="@drawable/dummy_thumbnail_dark"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<ScrollView
|
|
||||||
android:id="@+id/detailMainContent"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:visibility="visible">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/detailVideoThumbnailWindowLayout"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/video_item_detail_thumbnail_image_height"
|
|
||||||
android:background="?attr/selectableItemBackground">
|
|
||||||
|
|
||||||
<ProgressBar android:id="@+id/detailProgressBar"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerInParent="true"
|
|
||||||
android:indeterminate="true"/>
|
|
||||||
|
|
||||||
<android.support.design.widget.FloatingActionButton
|
|
||||||
android:id="@+id/playVideoButton"
|
|
||||||
android:visibility="invisible"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerInParent="true"
|
|
||||||
app:backgroundTint="@color/light_youtube_primary_color"
|
|
||||||
android:src="@drawable/ic_play_arrow_black"
|
|
||||||
android:layout_margin="@dimen/video_item_detail_play_fab_margin"/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/detailVideoThumbnailWindowBackgroundButton"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?attr/selectableItemBackground"/>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/detailTextContentLayout"
|
|
||||||
android:visibility="invisible"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:padding="@dimen/video_item_detail_info_text_padding"
|
|
||||||
android:layout_below="@id/detailVideoThumbnailWindowLayout"
|
|
||||||
android:background="@color/light_background_color">
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailVideoTitleView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textSize="@dimen/video_item_detail_title_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailUploaderThumbnailView"
|
|
||||||
android:contentDescription="@string/detail_uploader_thumbnail_view_description"
|
|
||||||
android:layout_width="@dimen/video_item_detail_uploader_image_size"
|
|
||||||
android:layout_height="@dimen/video_item_detail_uploader_image_size"
|
|
||||||
android:layout_below="@id/detailVideoTitleView"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:src="@drawable/buddy"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailUploaderView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailUploaderThumbnailView"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textSize="@dimen/video_item_detail_uploader_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailViewCountView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailVideoTitleView"
|
|
||||||
android:layout_alignParentRight="true"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_views_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailThumbsDownCountView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_alignParentRight="true"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_likes_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailThumbsDownImgView"
|
|
||||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
|
||||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
|
||||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_toLeftOf="@id/detailThumbsDownCountView"
|
|
||||||
android:layout_toStartOf="@id/detailThumbsDownCountView"
|
|
||||||
android:layout_marginLeft="@dimen/video_item_detail_like_margin"
|
|
||||||
android:src="@drawable/thumbs_down"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailThumbsUpCountView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_toLeftOf="@id/detailThumbsDownImgView"
|
|
||||||
android:layout_toStartOf="@id/detailThumbsDownImgView"
|
|
||||||
android:textSize="@dimen/video_item_detail_likes_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailThumbsUpImgView"
|
|
||||||
android:contentDescription="@string/detail_likes_img_view_description"
|
|
||||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
|
||||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_toLeftOf="@id/detailThumbsUpCountView"
|
|
||||||
android:layout_toStartOf="@id/detailThumbsUpCountView"
|
|
||||||
android:src="@drawable/thumbs_up"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailUploadDateView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailUploaderView"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_upload_date_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailDescriptionView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailUploadDateView"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_description_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/detailNextVideoRootLayout"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:padding="@dimen/video_item_detail_info_text_padding"
|
|
||||||
android:layout_below="@id/detailDescriptionView" >
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailNextVideoTitle"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerHorizontal="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_next_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:text="@string/next_video_title"
|
|
||||||
android:textAllCaps="true" />
|
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/detailNextVidButtonAndContentLayout"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailNextVideoTitle">
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/detailNextVideoFrame"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
<Button
|
|
||||||
android:id="@+id/detailNextVideoButton"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_alignTop="@id/detailNextVideoFrame"
|
|
||||||
android:layout_alignBottom="@id/detailNextVideoFrame"
|
|
||||||
android:background="?attr/selectableItemBackground"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
<Button android:id="@+id/detailShowSimilarButton"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailNextVidButtonAndContentLayout"
|
|
||||||
android:textSize="@dimen/video_item_detail_similar_text_size"
|
|
||||||
android:text="@string/similar_videos_btn_text"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
</RelativeLayout>
|
|
||||||
</ScrollView>
|
|
||||||
</RelativeLayout>
|
|
|
@ -1,221 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
tools:context=".VideoItemDetailFragment"
|
|
||||||
android:textIsSelectable="true"
|
|
||||||
style="?android:attr/textAppearanceLarge"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:id="@+id/videoitem_detail">
|
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailThumbnailView"
|
|
||||||
android:contentDescription="@string/detail_thumbnail_view_description"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:scaleType="centerCrop"
|
|
||||||
android:adjustViewBounds="true"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:layout_alignParentTop="true"
|
|
||||||
android:background="@android:color/black"
|
|
||||||
android:src="@drawable/dummy_thumbnail_dark"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<ScrollView
|
|
||||||
android:id="@+id/detailMainContent"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:visibility="visible">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/detailVideoThumbnailWindowLayout"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/video_item_detail_thumbnail_image_height"
|
|
||||||
android:background="?attr/selectableItemBackground">
|
|
||||||
|
|
||||||
<ProgressBar android:id="@+id/detailProgressBar"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerInParent="true"
|
|
||||||
android:indeterminate="true"
|
|
||||||
android:indeterminateTint="@color/light_youtube_primary_color"
|
|
||||||
android:indeterminateTintMode="src_in"/>
|
|
||||||
|
|
||||||
<android.support.design.widget.FloatingActionButton
|
|
||||||
android:id="@+id/playVideoButton"
|
|
||||||
android:visibility="invisible"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerInParent="true"
|
|
||||||
app:backgroundTint="@color/light_youtube_primary_color"
|
|
||||||
android:src="@drawable/ic_play_arrow_black"
|
|
||||||
android:layout_margin="@dimen/video_item_detail_play_fab_margin"/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/detailVideoThumbnailWindowBackgroundButton"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?attr/selectableItemBackground"/>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/detailTextContentLayout"
|
|
||||||
android:visibility="invisible"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:padding="@dimen/video_item_detail_info_text_padding"
|
|
||||||
android:layout_below="@id/detailVideoThumbnailWindowLayout"
|
|
||||||
android:background="@color/light_background_color">
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailVideoTitleView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textSize="@dimen/video_item_detail_title_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailUploaderThumbnailView"
|
|
||||||
android:contentDescription="@string/detail_uploader_thumbnail_view_description"
|
|
||||||
android:layout_width="@dimen/video_item_detail_uploader_image_size"
|
|
||||||
android:layout_height="@dimen/video_item_detail_uploader_image_size"
|
|
||||||
android:layout_below="@id/detailVideoTitleView"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:src="@drawable/buddy"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailUploaderView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailUploaderThumbnailView"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textSize="@dimen/video_item_detail_uploader_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailViewCountView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailVideoTitleView"
|
|
||||||
android:layout_alignParentRight="true"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_views_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailThumbsDownCountView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_alignParentRight="true"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_likes_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailThumbsDownImgView"
|
|
||||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
|
||||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
|
||||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_toLeftOf="@id/detailThumbsDownCountView"
|
|
||||||
android:layout_toStartOf="@id/detailThumbsDownCountView"
|
|
||||||
android:layout_marginLeft="@dimen/video_item_detail_like_margin"
|
|
||||||
android:src="@drawable/thumbs_down"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailThumbsUpCountView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_toLeftOf="@id/detailThumbsDownImgView"
|
|
||||||
android:layout_toStartOf="@id/detailThumbsDownImgView"
|
|
||||||
android:textSize="@dimen/video_item_detail_likes_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailThumbsUpImgView"
|
|
||||||
android:contentDescription="@string/detail_likes_img_view_description"
|
|
||||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
|
||||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_toLeftOf="@id/detailThumbsUpCountView"
|
|
||||||
android:layout_toStartOf="@id/detailThumbsUpCountView"
|
|
||||||
android:src="@drawable/thumbs_up"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailUploadDateView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailUploaderView"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_upload_date_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailDescriptionView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailUploadDateView"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_description_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
tools:ignore="RtlHardcoded" />
|
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/detailNextVideoRootLayout"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:padding="@dimen/video_item_detail_info_text_padding"
|
|
||||||
android:layout_below="@id/detailDescriptionView" >
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailNextVideoTitle"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerHorizontal="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_next_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:text="@string/next_video_title"
|
|
||||||
android:textAllCaps="true" />
|
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/detailNextVidButtonAndContentLayout"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailNextVideoTitle">
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/detailNextVideoFrame"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
<Button
|
|
||||||
android:id="@+id/detailNextVideoButton"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_alignTop="@id/detailNextVideoFrame"
|
|
||||||
android:layout_alignBottom="@id/detailNextVideoFrame"
|
|
||||||
android:background="?attr/selectableItemBackground"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
<Button android:id="@+id/detailShowSimilarButton"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailNextVidButtonAndContentLayout"
|
|
||||||
android:textSize="@dimen/video_item_detail_similar_text_size"
|
|
||||||
android:text="@string/similar_videos_btn_text"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
</RelativeLayout>
|
|
||||||
</ScrollView>
|
|
||||||
</RelativeLayout>
|
|
|
@ -10,11 +10,12 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:id="@+id/videoitem_detail">
|
android:id="@+id/videoitem_detail">
|
||||||
|
|
||||||
<ScrollView
|
<com.nirhart.parallaxscroll.views.ParallaxScrollView
|
||||||
android:id="@+id/detailMainContent"
|
android:id="@+id/detailMainContent"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
|
app:parallax_factor="1.9"
|
||||||
tools:ignore="UselessParent">
|
tools:ignore="UselessParent">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
|
@ -64,111 +65,173 @@
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/detailTextContentLayout"
|
<RelativeLayout android:id="@+id/detailTextContentLayout"
|
||||||
android:visibility="invisible"
|
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_below="@id/detailVideoThumbnailWindowLayout"
|
||||||
|
android:background="@color/light_background_color"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="@dimen/video_item_detail_info_text_padding"
|
android:id="@+id/detailTopView">
|
||||||
android:layout_below="@id/detailVideoThumbnailWindowLayout"
|
|
||||||
android:background="@color/light_background_color">
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailVideoTitleView"
|
<TextView android:id="@+id/detailVideoTitleView"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="0dp"
|
||||||
|
android:layout_weight=".7"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textSize="@dimen/video_item_detail_title_text_size"
|
android:textSize="@dimen/video_item_detail_title_text_size"
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"/>
|
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_marginLeft="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:text="Title"/>
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailUploaderThumbnailView"
|
<ImageView
|
||||||
android:contentDescription="@string/detail_uploader_thumbnail_view_description"
|
android:layout_width="15dp"
|
||||||
android:layout_width="@dimen/video_item_detail_uploader_image_size"
|
android:layout_height="30dp"
|
||||||
android:layout_height="@dimen/video_item_detail_uploader_image_size"
|
android:id="@+id/toggleDescriptionView"
|
||||||
android:layout_below="@id/detailVideoTitleView"
|
android:src="@drawable/arrow_down"
|
||||||
android:layout_alignParentLeft="true"
|
android:layout_marginLeft="10dp"
|
||||||
android:layout_alignParentStart="true"
|
android:layout_marginStart="10dp"
|
||||||
android:src="@drawable/buddy" />
|
android:layout_marginRight="10dp"
|
||||||
|
android:layout_marginEnd="10dp"
|
||||||
|
android:layout_marginTop="8dp"/>
|
||||||
|
|
||||||
<TextView android:id="@+id/detailUploaderView"
|
</LinearLayout>
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/detailUploaderThumbnailView"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textSize="@dimen/video_item_detail_uploader_text_size"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailViewCountView"
|
<TextView android:id="@+id/detailViewCountView"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/detailVideoTitleView"
|
|
||||||
android:layout_alignParentRight="true"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:textSize="@dimen/video_item_detail_views_text_size"
|
android:textSize="@dimen/video_item_detail_views_text_size"
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||||
|
android:layout_marginLeft="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:text="10,069,948 views"
|
||||||
|
android:layout_below="@id/detailTopView"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:layout_marginTop="5dp" />
|
||||||
|
|
||||||
<TextView android:id="@+id/detailThumbsDownCountView"
|
<RelativeLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/detailViewCountView"
|
android:layout_below="@id/detailViewCountView"
|
||||||
|
android:id="@+id/detailExtraView"
|
||||||
|
android:layout_marginLeft="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginRight="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:visibility="gone">
|
||||||
|
<TextView android:id="@+id/detailUploadDateView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="@dimen/video_item_detail_upload_date_text_size"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:text="Upload date"
|
||||||
|
android:layout_marginTop="3dp" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/detailDescriptionView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="@dimen/video_item_detail_description_text_size"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:layout_below="@id/detailUploadDateView"
|
||||||
|
android:text="Description............."
|
||||||
|
android:layout_marginTop="3dp" />
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/linearLayout"
|
||||||
|
android:layout_marginLeft="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_below="@+id/detailExtraView"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginTop="5dp">
|
||||||
|
<ImageView android:id="@+id/detailThumbsUpImgView"
|
||||||
|
android:contentDescription="@string/detail_likes_img_view_description"
|
||||||
|
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||||
|
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||||
|
android:src="@drawable/thumbs_up" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/detailThumbsUpCountView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
android:textSize="@dimen/video_item_detail_likes_text_size"
|
android:textSize="@dimen/video_item_detail_likes_text_size"
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:text="200" />
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailThumbsDownImgView"
|
<ImageView android:id="@+id/detailThumbsDownImgView"
|
||||||
android:contentDescription="@string/detail_dislikes_img_view_description"
|
android:contentDescription="@string/detail_dislikes_img_view_description"
|
||||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
android:layout_width="@dimen/video_item_detail_like_image_width"
|
||||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
android:layout_height="@dimen/video_item_detail_like_image_height"
|
||||||
android:layout_below="@id/detailViewCountView"
|
android:src="@drawable/thumbs_down"
|
||||||
android:layout_toLeftOf="@id/detailThumbsDownCountView"
|
android:layout_marginLeft="10dp"
|
||||||
android:layout_toStartOf="@id/detailThumbsDownCountView"
|
android:layout_marginStart="10dp"/>
|
||||||
android:layout_marginLeft="@dimen/video_item_detail_like_margin"
|
|
||||||
android:src="@drawable/thumbs_down" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailThumbsUpCountView"
|
<TextView android:id="@+id/detailThumbsDownCountView"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_toLeftOf="@id/detailThumbsDownImgView"
|
|
||||||
android:layout_toStartOf="@id/detailThumbsDownImgView"
|
|
||||||
android:textSize="@dimen/video_item_detail_likes_text_size"
|
android:textSize="@dimen/video_item_detail_likes_text_size"
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"/>
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:text="100" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<ImageView android:id="@+id/detailThumbsUpImgView"
|
<RelativeLayout
|
||||||
android:contentDescription="@string/detail_likes_img_view_description"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="@dimen/video_item_detail_like_image_width"
|
|
||||||
android:layout_height="@dimen/video_item_detail_like_image_height"
|
|
||||||
android:layout_below="@id/detailViewCountView"
|
|
||||||
android:layout_toLeftOf="@id/detailThumbsUpCountView"
|
|
||||||
android:layout_toStartOf="@id/detailThumbsUpCountView"
|
|
||||||
android:src="@drawable/thumbs_up" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/detailUploadDateView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/detailUploaderView"
|
android:layout_below="@+id/linearLayout"
|
||||||
|
android:id="@+id/detailUploaderWrapView"
|
||||||
|
android:layout_marginTop="12dp">
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:background="#000"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1px" />
|
||||||
|
|
||||||
|
<de.hdodenhof.circleimageview.CircleImageView android:id="@+id/detailUploaderThumbnailView"
|
||||||
|
android:contentDescription="@string/detail_uploader_thumbnail_view_description"
|
||||||
|
android:layout_width="@dimen/video_item_detail_uploader_image_size"
|
||||||
|
android:layout_height="@dimen/video_item_detail_uploader_image_size"
|
||||||
|
android:src="@drawable/buddy"
|
||||||
|
android:layout_marginLeft="10dp"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
android:layout_alignParentLeft="true"
|
android:layout_alignParentLeft="true"
|
||||||
android:layout_alignParentStart="true"
|
android:layout_alignParentStart="true"
|
||||||
android:textSize="@dimen/video_item_detail_upload_date_text_size"
|
android:layout_marginTop="5dp"
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
android:layout_marginBottom="5dp"/>
|
||||||
|
|
||||||
<TextView android:id="@+id/detailDescriptionView"
|
<TextView android:id="@+id/detailUploaderView"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/detailUploadDateView"
|
android:textStyle="bold"
|
||||||
android:layout_alignParentLeft="true"
|
android:textSize="@dimen/video_item_detail_uploader_text_size"
|
||||||
android:layout_alignParentStart="true"
|
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||||
android:textSize="@dimen/video_item_detail_description_text_size"
|
android:text="Uploader"
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_toRightOf="@+id/detailUploaderThumbnailView"
|
||||||
|
android:layout_toEndOf="@+id/detailUploaderThumbnailView"
|
||||||
|
android:layout_marginLeft="15dp"
|
||||||
|
android:layout_marginStart="28dp" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:background="#000"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1px"
|
||||||
|
android:layout_below="@id/detailUploaderThumbnailView"/>
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/detailNextVideoRootLayout"
|
<RelativeLayout android:id="@+id/detailNextVideoRootLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:padding="@dimen/video_item_detail_info_text_padding"
|
android:layout_gravity="center_horizontal|bottom"
|
||||||
android:layout_below="@id/detailDescriptionView" >
|
android:layout_below="@+id/detailUploaderWrapView"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:layout_marginTop="10dp">
|
||||||
|
|
||||||
<TextView android:id="@+id/detailNextVideoTitle"
|
<TextView android:id="@+id/detailNextVideoTitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -181,7 +244,7 @@
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/detailNextVidButtonAndContentLayout"
|
<RelativeLayout android:id="@+id/detailNextVidButtonAndContentLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_below="@id/detailNextVideoTitle">
|
android:layout_below="@id/detailNextVideoTitle">
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/detailNextVideoFrame"
|
android:id="@+id/detailNextVideoFrame"
|
||||||
|
@ -195,15 +258,24 @@
|
||||||
android:layout_alignBottom="@id/detailNextVideoFrame"
|
android:layout_alignBottom="@id/detailNextVideoFrame"
|
||||||
android:background="?attr/selectableItemBackground"/>
|
android:background="?attr/selectableItemBackground"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
<Button android:id="@+id/detailShowSimilarButton"
|
<TextView android:id="@+id/detailSimilarTitle"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:textSize="@dimen/video_item_detail_next_text_size"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:text="@string/similar_videos_btn_text"
|
||||||
android:layout_below="@id/detailNextVidButtonAndContentLayout"
|
android:layout_below="@id/detailNextVidButtonAndContentLayout"
|
||||||
android:textSize="@dimen/video_item_detail_similar_text_size"
|
android:textAllCaps="true" />
|
||||||
android:text="@string/similar_videos_btn_text"/>
|
<LinearLayout
|
||||||
</RelativeLayout>
|
android:orientation="vertical"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:id="@+id/similarVideosView"
|
||||||
|
android:layout_below="@id/detailSimilarTitle">
|
||||||
|
</LinearLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</ScrollView>
|
</RelativeLayout>
|
||||||
|
</com.nirhart.parallaxscroll.views.ParallaxScrollView>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
|
@ -5,16 +5,11 @@
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/loading"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/paginate_progress_bar"
|
android:id="@+id/paginate_progress_bar"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginRight="10dp" />
|
android:gravity="center"
|
||||||
|
android:paddingBottom="10dp"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -51,7 +51,7 @@
|
||||||
android:background="#00ffffff"
|
android:background="#00ffffff"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:scaleType="fitXY"
|
android:scaleType="fitXY"
|
||||||
android:src="@drawable/ic_play_arrow_white_48dp" />
|
android:src="@drawable/ic_pause_white_24dp" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/backgroundStop"
|
android:id="@+id/backgroundStop"
|
||||||
|
|
|
@ -55,10 +55,10 @@
|
||||||
android:scaleType="fitXY"
|
android:scaleType="fitXY"
|
||||||
android:src="@drawable/ic_close_white_24dp" />
|
android:src="@drawable/ic_close_white_24dp" />
|
||||||
|
|
||||||
<LinearLayout
|
<RelativeLayout
|
||||||
android:id="@+id/backgroundButtons"
|
android:id="@+id/backgroundButtons"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="40dp"
|
android:layout_height="50dp"
|
||||||
android:layout_alignBottom="@id/backgroundCover"
|
android:layout_alignBottom="@id/backgroundCover"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_toRightOf="@+id/backgroundCover"
|
android:layout_toRightOf="@+id/backgroundCover"
|
||||||
|
@ -66,15 +66,14 @@
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/backgroundPlayPause"
|
android:id="@+id/backgroundPlayPause"
|
||||||
android:layout_width="0dp"
|
android:layout_width="40dp"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="40dp"
|
||||||
android:layout_marginLeft="30dp"
|
|
||||||
android:layout_marginRight="30dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="#00ffffff"
|
android:background="#00ffffff"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="fitXY"
|
||||||
android:src="@drawable/ic_play_arrow_white_48dp" />
|
android:src="@drawable/ic_pause_white_24dp"
|
||||||
</LinearLayout>
|
android:layout_alignParentTop="true"
|
||||||
|
android:layout_centerHorizontal="true" />
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
|
@ -1,29 +1,15 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content" >
|
android:layout_height="wrap_content" >
|
||||||
|
|
||||||
<android.support.v7.widget.CardView
|
|
||||||
xmlns:card_view="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:id="@+id/card_view"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
card_view:cardCornerRadius="@dimen/video_item_search_card_radius"
|
|
||||||
android:layout_marginTop="@dimen/video_item_search_card_vertical_margin"
|
|
||||||
android:layout_marginBottom="@dimen/video_item_search_card_vertical_margin"
|
|
||||||
android:layout_marginLeft="@dimen/video_item_search_card_horizontal_margin"
|
|
||||||
android:layout_marginRight="@dimen/video_item_search_card_horizontal_margin" >
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="@dimen/video_item_search_card_padding">
|
android:layout_margin="12dp">
|
||||||
|
|
||||||
<RelativeLayout android:id="@+id/itemThumbnailViewContainer"
|
<RelativeLayout android:id="@+id/itemThumbnailViewContainer"
|
||||||
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
|
android:layout_marginRight="@dimen/video_item_search_image_right_margin"
|
||||||
|
@ -81,9 +67,20 @@
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
android:textSize="@dimen/video_item_search_uploader_text_size"/>
|
android:textSize="@dimen/video_item_search_uploader_text_size"/>
|
||||||
|
<LinearLayout
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<TextView android:id="@+id/itemUploadDateView"
|
<TextView android:id="@+id/itemUploadDateView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textSize="@dimen/video_item_search_upload_date_text_size"/>
|
||||||
|
|
||||||
|
<TextView android:id="@+id/itemViewCountView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
@ -91,6 +88,8 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
</android.support.v7.widget.CardView>
|
</LinearLayout>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -11,21 +11,17 @@
|
||||||
<dimen name="video_item_search_thumbnail_image_width">140dp</dimen>
|
<dimen name="video_item_search_thumbnail_image_width">140dp</dimen>
|
||||||
<dimen name="video_item_search_thumbnail_image_height">85dp</dimen>
|
<dimen name="video_item_search_thumbnail_image_height">85dp</dimen>
|
||||||
<!-- Paddings & Margins -->
|
<!-- Paddings & Margins -->
|
||||||
<dimen name="video_item_search_card_vertical_margin">3dp</dimen>
|
|
||||||
<dimen name="video_item_search_card_horizontal_margin">6dp</dimen>
|
|
||||||
<dimen name="video_item_search_card_padding">6dp</dimen>
|
|
||||||
<dimen name="video_item_search_image_right_margin">6dp</dimen>
|
<dimen name="video_item_search_image_right_margin">6dp</dimen>
|
||||||
<dimen name="video_item_search_duration_vertical_padding">1sp</dimen>
|
<dimen name="video_item_search_duration_vertical_padding">1sp</dimen>
|
||||||
<dimen name="video_item_search_duration_horizontal_padding">5sp</dimen>
|
<dimen name="video_item_search_duration_horizontal_padding">5sp</dimen>
|
||||||
<dimen name="video_item_search_duration_margin">2sp</dimen>
|
<dimen name="video_item_search_duration_margin">2sp</dimen>
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<dimen name="video_item_search_card_radius">4dp</dimen>
|
|
||||||
|
|
||||||
<!-- Video Item Detail View Dimensions-->
|
<!-- Video Item Detail View Dimensions-->
|
||||||
<!-- Text Size -->
|
<!-- Text Size -->
|
||||||
<dimen name="video_item_detail_title_text_size">18sp</dimen>
|
<dimen name="video_item_detail_title_text_size">20sp</dimen>
|
||||||
<dimen name="video_item_detail_views_text_size">14sp</dimen>
|
<dimen name="video_item_detail_views_text_size">14sp</dimen>
|
||||||
<dimen name="video_item_detail_likes_text_size">12sp</dimen>
|
<dimen name="video_item_detail_likes_text_size">14sp</dimen>
|
||||||
<dimen name="video_item_detail_uploader_text_size">14sp</dimen>
|
<dimen name="video_item_detail_uploader_text_size">14sp</dimen>
|
||||||
<dimen name="video_item_detail_upload_date_text_size">14sp</dimen>
|
<dimen name="video_item_detail_upload_date_text_size">14sp</dimen>
|
||||||
<dimen name="video_item_detail_description_text_size">14sp</dimen>
|
<dimen name="video_item_detail_description_text_size">14sp</dimen>
|
||||||
|
@ -33,11 +29,10 @@
|
||||||
<dimen name="video_item_detail_similar_text_size">16sp</dimen>
|
<dimen name="video_item_detail_similar_text_size">16sp</dimen>
|
||||||
<!-- Elements Size -->
|
<!-- Elements Size -->
|
||||||
<dimen name="video_item_detail_thumbnail_image_height">200dp</dimen>
|
<dimen name="video_item_detail_thumbnail_image_height">200dp</dimen>
|
||||||
<dimen name="video_item_detail_uploader_image_size">80dp</dimen>
|
<dimen name="video_item_detail_uploader_image_size">50dp</dimen>
|
||||||
<dimen name="video_item_detail_like_image_height">18sp</dimen>
|
<dimen name="video_item_detail_like_image_height">18sp</dimen>
|
||||||
<dimen name="video_item_detail_like_image_width">18sp</dimen>
|
<dimen name="video_item_detail_like_image_width">18sp</dimen>
|
||||||
<!-- Paddings & Margins -->
|
<!-- Paddings & Margins -->
|
||||||
<dimen name="video_item_detail_info_text_padding">6sp</dimen>
|
|
||||||
<dimen name="video_item_detail_like_margin">6sp</dimen>
|
<dimen name="video_item_detail_like_margin">6sp</dimen>
|
||||||
<dimen name="video_item_detail_play_fab_margin">20dp</dimen>
|
<dimen name="video_item_detail_play_fab_margin">20dp</dimen>
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
<string name="play_btn_text">Play</string>
|
<string name="play_btn_text">Play</string>
|
||||||
<string name="general_error">Error</string>
|
<string name="general_error">Error</string>
|
||||||
<string name="network_error">Network error</string>
|
<string name="network_error">Network error</string>
|
||||||
<string name="could_not_load_thumbnails">Could not load Thumbnails</string>
|
<string name="could_not_load_thumbnails">Could not load all Thumbnails</string>
|
||||||
<string name="youtube_signature_decryption_error">Could not decrypt video url signature.</string>
|
<string name="youtube_signature_decryption_error">Could not decrypt video url signature.</string>
|
||||||
<string name="parsing_error">Could not parse website.</string>
|
<string name="parsing_error">Could not parse website.</string>
|
||||||
<string name="content_not_available">Content not available.</string>
|
<string name="content_not_available">Content not available.</string>
|
||||||
|
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 324 KiB |
Before Width: | Height: | Size: 320 KiB After Width: | Height: | Size: 266 KiB |
Before Width: | Height: | Size: 247 KiB After Width: | Height: | Size: 261 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 180 KiB |
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 165 KiB |
Before Width: | Height: | Size: 163 KiB |