1
0
mirror of https://github.com/TeamNewPipe/NewPipe.git synced 2024-11-21 18:42:35 +01:00

added NextVideo support

This commit is contained in:
Christian Schabesberger 2015-10-25 19:13:44 +01:00
parent 8c0156dea3
commit d9e690f62c
12 changed files with 311 additions and 123 deletions

View File

@ -37,7 +37,7 @@
<ConfirmationsSetting value="0" id="Add" /> <ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" /> <ConfirmationsSetting value="0" id="Remove" />
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -31,4 +31,5 @@ public class VideoInfoItem {
public Bitmap thumbnail = null; public Bitmap thumbnail = null;
public String webpage_url = ""; public String webpage_url = "";
public String upload_date = ""; public String upload_date = "";
public String view_count = "";
} }

View File

@ -0,0 +1,76 @@
package org.schabi.newpipe;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Created by Christian Schabesberger on 24.10.15.
*
* Copyright (C) Christian Schabesberger 2015 <chris.schabesberger@mailbox.org>
* VideoInfoItemViewCreator.java is part of NewPipe.
*
* NewPipe is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* NewPipe is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/
public class VideoInfoItemViewCreator {
private static final String TAG = VideoInfoItemViewCreator.class.toString();
LayoutInflater inflater;
public VideoInfoItemViewCreator(LayoutInflater inflater) {
this.inflater = inflater;
}
public View getViewByVideoInfoItem(View convertView, ViewGroup parent, VideoInfoItem info) {
ViewHolder holder;
if(convertView == null) {
convertView = inflater.inflate(R.layout.video_item, parent, false);
holder = new ViewHolder();
holder.itemThumbnailView = (ImageView) convertView.findViewById(R.id.itemThumbnailView);
holder.itemVideoTitleView = (TextView) convertView.findViewById(R.id.itemVideoTitleView);
holder.itemUploaderView = (TextView) convertView.findViewById(R.id.itemUploaderView);
holder.itemDurationView = (TextView) convertView.findViewById(R.id.itemDurationView);
holder.itemUploadDateView = (TextView) convertView.findViewById(R.id.itemUploadDateView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(info.thumbnail == null) {
holder.itemThumbnailView.setImageResource(R.drawable.dummi_thumbnail);
} else {
holder.itemThumbnailView.setImageBitmap(info.thumbnail);
}
holder.itemVideoTitleView.setText(info.title);
holder.itemUploaderView.setText(info.uploader);
holder.itemDurationView.setText(info.duration);
if(!info.upload_date.isEmpty()) {
holder.itemUploadDateView.setText(info.upload_date);
} else {
//tewak if nececeary: This is a hack preventing to have a white space in the layout :P
holder.itemUploadDateView.setText(info.view_count);
}
return convertView;
}
private class ViewHolder {
public ImageView itemThumbnailView;
public TextView itemVideoTitleView, itemUploaderView, itemDurationView, itemUploadDateView;
}
}

View File

@ -1,6 +1,7 @@
package org.schabi.newpipe; package org.schabi.newpipe;
import android.app.Activity; import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.os.Bundle; import android.os.Bundle;
@ -15,9 +16,12 @@ import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import java.net.URL; import java.net.URL;
@ -57,6 +61,7 @@ public class VideoItemDetailFragment extends Fragment {
private boolean autoPlayEnabled = false; private boolean autoPlayEnabled = false;
private Thread extractorThread = null; private Thread extractorThread = null;
private VideoInfo currentVideoInfo = null;
private class ExtractorRunnable implements Runnable { private class ExtractorRunnable implements Runnable {
private Handler h = new Handler(); private Handler h = new Handler();
@ -83,6 +88,11 @@ public class VideoItemDetailFragment extends Fragment {
new URL(videoInfo.uploader_thumbnail_url) new URL(videoInfo.uploader_thumbnail_url)
.openConnection() .openConnection()
.getInputStream()), SetThumbnailRunnable.CHANNEL_THUMBNAIL)); .getInputStream()), SetThumbnailRunnable.CHANNEL_THUMBNAIL));
h.post(new SetThumbnailRunnable(
BitmapFactory.decodeStream(
new URL(videoInfo.nextVideo.thumbnail_url)
.openConnection()
.getInputStream()), SetThumbnailRunnable.NEXT_VIDEO_THUMBNAIL));
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -103,8 +113,9 @@ public class VideoItemDetailFragment extends Fragment {
} }
private class SetThumbnailRunnable implements Runnable { private class SetThumbnailRunnable implements Runnable {
public static final int CHANNEL_THUMBNAIL = 2;
public static final int VIDEO_THUMBNAIL = 1; public static final int VIDEO_THUMBNAIL = 1;
public static final int CHANNEL_THUMBNAIL = 2;
public static final int NEXT_VIDEO_THUMBNAIL = 3;
private Bitmap thumbnail; private Bitmap thumbnail;
private int thumbnailId; private int thumbnailId;
public SetThumbnailRunnable(Bitmap thumbnail, int id) { public SetThumbnailRunnable(Bitmap thumbnail, int id) {
@ -123,19 +134,25 @@ public class VideoItemDetailFragment extends Fragment {
try { try {
switch (id) { switch (id) {
case SetThumbnailRunnable.VIDEO_THUMBNAIL: case SetThumbnailRunnable.VIDEO_THUMBNAIL:
thumbnailView = (ImageView) a.findViewById(R.id.detailThumbnailView); thumbnailView = (ImageView) a.findViewById(R.id.detailThumbnailView);
break; break;
case SetThumbnailRunnable.CHANNEL_THUMBNAIL: case SetThumbnailRunnable.CHANNEL_THUMBNAIL:
thumbnailView = (ImageView) a.findViewById(R.id.detailUploaderThumbnailView); thumbnailView = (ImageView) a.findViewById(R.id.detailUploaderThumbnailView);
break; 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: default:
Log.d(TAG, "Error: Thumbnail id not known"); Log.d(TAG, "Error: Thumbnail id not known");
return; return;
} }
if (thumbnailView != null) { if (thumbnailView != null) {
thumbnailView.setImageBitmap(thumbnail); thumbnailView.setImageBitmap(thumbnail);
} }
} catch (java.lang.NullPointerException e) { } catch (java.lang.NullPointerException e) {
// No god programm design i know. :/ // No god programm design i know. :/
Log.w(TAG, "updateThumbnail(): Fragment closed before thread ended work"); Log.w(TAG, "updateThumbnail(): Fragment closed before thread ended work");
@ -144,7 +161,12 @@ public class VideoItemDetailFragment extends Fragment {
public void updateInfo(VideoInfo info) { public void updateInfo(VideoInfo info) {
Activity a = getActivity(); Activity a = getActivity();
currentVideoInfo = info;
try { try {
VideoInfoItemViewCreator videoItemViewCreator =
new VideoInfoItemViewCreator(LayoutInflater.from(getActivity()));
ScrollView contentMainView = (ScrollView) a.findViewById(R.id.detailMainContent);
ProgressBar progressBar = (ProgressBar) a.findViewById(R.id.detailProgressBar); ProgressBar progressBar = (ProgressBar) a.findViewById(R.id.detailProgressBar);
TextView videoTitleView = (TextView) a.findViewById(R.id.detailVideoTitleView); TextView videoTitleView = (TextView) a.findViewById(R.id.detailVideoTitleView);
TextView uploaderView = (TextView) a.findViewById(R.id.detailUploaderView); TextView uploaderView = (TextView) a.findViewById(R.id.detailUploaderView);
@ -154,28 +176,14 @@ public class VideoItemDetailFragment extends Fragment {
TextView uploadDateView = (TextView) a.findViewById(R.id.detailUploadDateView); TextView uploadDateView = (TextView) a.findViewById(R.id.detailUploadDateView);
TextView descriptionView = (TextView) a.findViewById(R.id.detailDescriptionView); TextView descriptionView = (TextView) a.findViewById(R.id.detailDescriptionView);
ImageView thumbnailView = (ImageView) a.findViewById(R.id.detailThumbnailView); ImageView thumbnailView = (ImageView) a.findViewById(R.id.detailThumbnailView);
ImageView uploaderThumbnailView = (ImageView) a.findViewById(R.id.detailUploaderThumbnailView); FrameLayout nextVideoFrame = (FrameLayout) a.findViewById(R.id.detailNextVideoFrame);
ImageView thumbsUpPic = (ImageView) a.findViewById(R.id.detailThumbsUpImgView); View nextVideoView = videoItemViewCreator
ImageView thumbsDownPic = (ImageView) a.findViewById(R.id.detailThumbsDownImgView); .getViewByVideoInfoItem(null, nextVideoFrame, info.nextVideo);
View textSeperationLine = a.findViewById(R.id.textSeperationLine); nextVideoFrame.addView(nextVideoView);
Button nextVideoButton = (Button) a.findViewById(R.id.detailNextVideoButton);
contentMainView.setVisibility(View.VISIBLE);
if(textSeperationLine != null) {
textSeperationLine.setVisibility(View.VISIBLE);
}
progressBar.setVisibility(View.GONE); progressBar.setVisibility(View.GONE);
videoTitleView.setVisibility(View.VISIBLE);
uploaderView.setVisibility(View.VISIBLE);
uploadDateView.setVisibility(View.VISIBLE);
viewCountView.setVisibility(View.VISIBLE);
thumbsUpView.setVisibility(View.VISIBLE);
thumbsDownView.setVisibility(View.VISIBLE);
uploadDateView.setVisibility(View.VISIBLE);
descriptionView.setVisibility(View.VISIBLE);
thumbnailView.setVisibility(View.VISIBLE);
uploaderThumbnailView.setVisibility(View.VISIBLE);
thumbsUpPic.setVisibility(View.VISIBLE);
thumbsDownPic.setVisibility(View.VISIBLE);
switch (info.videoAvailableStatus) { switch (info.videoAvailableStatus) {
case VideoInfo.VIDEO_AVAILABLE: { case VideoInfo.VIDEO_AVAILABLE: {
@ -203,6 +211,18 @@ public class VideoItemDetailFragment extends Fragment {
} }
ActionBarHandler.getHandler().setStreams(streamList, info.audioStreams); ActionBarHandler.getHandler().setStreams(streamList, info.audioStreams);
} }
nextVideoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent detailIntent = new Intent(getActivity(), VideoItemDetailActivity.class);
detailIntent.putExtra(VideoItemDetailFragment.ARG_ITEM_ID, currentVideoInfo.nextVideo.id);
detailIntent.putExtra(VideoItemDetailFragment.VIDEO_URL, currentVideoInfo.nextVideo.webpage_url);
//todo: make id dynamic the following line is crap
detailIntent.putExtra(VideoItemDetailFragment.STREAMING_SERVICE, 0);
startActivity(detailIntent);
}
});
break; break;
case VideoInfo.VIDEO_UNAVAILABLE_GEMA: case VideoInfo.VIDEO_UNAVAILABLE_GEMA:
thumbnailView.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.gruese_die_gema_unangebracht)); thumbnailView.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.gruese_die_gema_unangebracht));

View File

@ -6,14 +6,12 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView;
import java.util.Vector; import java.util.Vector;
/** /**
* Created by the-scrabi on 11.08.15. * Created by Christian Schabesberger on 11.08.15.
* *
* Copyright (C) Christian Schabesberger 2015 <chris.schabesberger@mailbox.org> * Copyright (C) Christian Schabesberger 2015 <chris.schabesberger@mailbox.org>
* VideoListAdapter.java is part of NewPipe. * VideoListAdapter.java is part of NewPipe.
@ -33,18 +31,20 @@ import java.util.Vector;
*/ */
public class VideoListAdapter extends BaseAdapter { public class VideoListAdapter extends BaseAdapter {
private static final String TAG = VideoListAdapter.class.toString(); private static final String TAG = VideoListAdapter.class.toString();
private LayoutInflater inflater;
private Context context;
private VideoInfoItemViewCreator viewCreator;
private Vector<VideoInfoItem> videoList = new Vector<>(); private Vector<VideoInfoItem> videoList = new Vector<>();
private Vector<Boolean> downloadedThumbnailList = new Vector<>(); private Vector<Boolean> downloadedThumbnailList = new Vector<>();
VideoItemListFragment videoListFragment; VideoItemListFragment videoListFragment;
ListView listView; ListView listView;
public VideoListAdapter(Context context, VideoItemListFragment videoListFragment) { public VideoListAdapter(Context context, VideoItemListFragment videoListFragment) {
inflater = LayoutInflater.from(context); viewCreator = new VideoInfoItemViewCreator(LayoutInflater.from(context));
this.videoListFragment = videoListFragment; this.videoListFragment = videoListFragment;
this.listView = videoListFragment.getListView(); this.listView = videoListFragment.getListView();
this.context = context;
} }
public void addVideoList(Vector<VideoInfoItem> videos) { public void addVideoList(Vector<VideoInfoItem> videos) {
@ -96,30 +96,7 @@ public class VideoListAdapter extends BaseAdapter {
@Override @Override
public View getView(int position, View convertView, ViewGroup parent) { public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder; convertView = viewCreator.getViewByVideoInfoItem(convertView, parent, videoList.get(position));
if(convertView == null) {
convertView = inflater.inflate(R.layout.video_item, parent, false);
holder = new ViewHolder();
holder.itemThumbnailView = (ImageView) convertView.findViewById(R.id.itemThumbnailView);
holder.itemVideoTitleView = (TextView) convertView.findViewById(R.id.itemVideoTitleView);
holder.itemUploaderView = (TextView) convertView.findViewById(R.id.itemUploaderView);
holder.itemDurationView = (TextView) convertView.findViewById(R.id.itemDurationView);
holder.itemUploadDateView = (TextView) convertView.findViewById(R.id.itemUploadDateView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final Context context = parent.getContext();
if(videoList.get(position).thumbnail == null) {
holder.itemThumbnailView.setImageResource(R.drawable.dummi_thumbnail);
} else {
holder.itemThumbnailView.setImageBitmap(videoList.get(position).thumbnail);
}
holder.itemVideoTitleView.setText(videoList.get(position).title);
holder.itemUploaderView.setText(videoList.get(position).uploader);
holder.itemDurationView.setText(videoList.get(position).duration);
holder.itemUploadDateView.setText(videoList.get(position).upload_date);
if(listView.isItemChecked(position)) { if(listView.isItemChecked(position)) {
convertView.setBackgroundColor(context.getResources().getColor(R.color.primaryColorYoutube)); convertView.setBackgroundColor(context.getResources().getColor(R.color.primaryColorYoutube));
@ -129,9 +106,4 @@ public class VideoListAdapter extends BaseAdapter {
return convertView; return convertView;
} }
private class ViewHolder {
public ImageView itemThumbnailView;
public TextView itemVideoTitleView, itemUploaderView, itemDurationView, itemUploadDateView;
}
} }

View File

@ -153,7 +153,7 @@ public class YoutubeExtractor implements Extractor {
//------------------------------------- //-------------------------------------
JSONObject playerArgs = null; JSONObject playerArgs = null;
JSONObject ytAssets = null; JSONObject ytAssets = null;
String dashManifest = ""; String dashManifest;
{ {
Pattern p = Pattern.compile("ytplayer.config\\s*=\\s*(\\{.*?\\});"); Pattern p = Pattern.compile("ytplayer.config\\s*=\\s*(\\{.*?\\});");
Matcher m = p.matcher(site); Matcher m = p.matcher(site);
@ -294,12 +294,10 @@ public class YoutubeExtractor implements Extractor {
// view count // view count
videoInfo.view_count = doc.select("div[class=\"watch-view-count\"]").first().text(); videoInfo.view_count = doc.select("div[class=\"watch-view-count\"]").first().text();
/*
// next video // next video
videoInfo.nextVideo = extractVideoInfoItem(doc.select("div[class=\"watch-sidebar-section\"]").first() videoInfo.nextVideo = extractVideoInfoItem(doc.select("div[class=\"watch-sidebar-section\"]").first()
.select("li").first()); .select("li").first());
int i = 0; int i = 0;
// related videos // related videos
videoInfo.relatedVideos = new Vector<>(); videoInfo.relatedVideos = new Vector<>();
@ -308,10 +306,8 @@ public class YoutubeExtractor implements Extractor {
if(li.select("a[class*=\"content-link\"]").first() != null) { if(li.select("a[class*=\"content-link\"]").first() != null) {
videoInfo.relatedVideos.add(extractVideoInfoItem(li)); videoInfo.relatedVideos.add(extractVideoInfoItem(li));
i++; i++;
Log.d(TAG, Integer.toString(i));
} }
} }
*/
return videoInfo; return videoInfo;
} }
@ -403,11 +399,10 @@ public class YoutubeExtractor implements Extractor {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
info.title = li.select("span[class=\"title\"]").first()
.text();
info.title = li.select("span[class=\"title\"]").first().text();
info.view_count = li.select("span[class*=\"view-count\"]").first().text();
info.uploader = li.select("span[class=\"g-hovercard\"]").first().text(); info.uploader = li.select("span[class=\"g-hovercard\"]").first().text();
info.duration = li.select("span[class=\"video-time\"]").first().text(); info.duration = li.select("span[class=\"video-time\"]").first().text();
Element img = li.select("img").first(); Element img = li.select("img").first();
@ -418,7 +413,9 @@ public class YoutubeExtractor implements Extractor {
if(info.thumbnail_url.contains(".gif")) { if(info.thumbnail_url.contains(".gif")) {
info.thumbnail_url = img.attr("data-thumb"); info.thumbnail_url = img.attr("data-thumb");
} }
if(info.thumbnail_url.startsWith("//")) {
info.thumbnail_url = "https:" + info.thumbnail_url;
}
return info; return info;
} }

View File

@ -6,7 +6,8 @@
style="?android:attr/textAppearanceLarge" style="?android:attr/textAppearanceLarge"
tools:context=".VideoItemDetailFragment" tools:context=".VideoItemDetailFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:id="@+id/videoitem_detail">
<ProgressBar android:id="@+id/detailProgressBar" <ProgressBar android:id="@+id/detailProgressBar"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -15,10 +16,11 @@
android:indeterminate="true"/> android:indeterminate="true"/>
<ScrollView <ScrollView
android:id="@+id/videoitem_detail" 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:textIsSelectable="true"> android:textIsSelectable="true"
android:visibility="invisible">
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -31,8 +33,7 @@
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:src="@drawable/dummi_thumbnail" android:src="@drawable/dummi_thumbnail"/>
android:visibility="invisible"/>
<TextView android:id="@+id/detailVideoTitleView" <TextView android:id="@+id/detailVideoTitleView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -42,8 +43,7 @@
android:paddingLeft="6dp" android:paddingLeft="6dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Bla blabla !!!" android:text="Bla blabla !!!"/>
android:visibility="invisible"/>
<ImageView android:id="@+id/detailUploaderThumbnailView" <ImageView android:id="@+id/detailUploaderThumbnailView"
android:layout_width="80dp" android:layout_width="80dp"
@ -53,7 +53,6 @@
android:paddingRight="5dp" android:paddingRight="5dp"
android:layout_below="@id/detailVideoTitleView" android:layout_below="@id/detailVideoTitleView"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:visibility="invisible"
android:src="@drawable/budy" /> android:src="@drawable/budy" />
<TextView android:id="@+id/detailUploaderView" <TextView android:id="@+id/detailUploaderView"
@ -64,7 +63,6 @@
android:paddingLeft="6dp" android:paddingLeft="6dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="Herr von Gurken" /> android:text="Herr von Gurken" />
<View android:id="@+id/textSeperationLine" <View android:id="@+id/textSeperationLine"
@ -73,7 +71,6 @@
android:background="@android:color/darker_gray" android:background="@android:color/darker_gray"
android:layout_below="@id/detailUploaderView" android:layout_below="@id/detailUploaderView"
android:paddingTop="20dp" android:paddingTop="20dp"
android:visibility="invisible"
android:layout_alignParentLeft="true" /> android:layout_alignParentLeft="true" />
<TextView android:id="@+id/detailViewCountView" <TextView android:id="@+id/detailViewCountView"
@ -83,7 +80,6 @@
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:paddingTop="70dp" android:paddingTop="70dp"
android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance="?android:attr/textAppearanceLarge"
android:visibility="invisible"
android:text="1.000.115 views" /> android:text="1.000.115 views" />
<TextView android:id="@+id/detailThumbsDownCountView" <TextView android:id="@+id/detailThumbsDownCountView"
@ -92,7 +88,6 @@
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="5.000" /> android:text="5.000" />
<ImageView android:id="@+id/detailThumbsDownImgView" <ImageView android:id="@+id/detailThumbsDownImgView"
@ -100,7 +95,6 @@
android:layout_height="20dp" android:layout_height="20dp"
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_toLeftOf="@id/detailThumbsDownCountView" android:layout_toLeftOf="@id/detailThumbsDownCountView"
android:visibility="invisible"
android:src="@drawable/thumbs_down" /> android:src="@drawable/thumbs_down" />
<TextView android:id="@+id/detailThumbsUpCountView" <TextView android:id="@+id/detailThumbsUpCountView"
@ -109,7 +103,6 @@
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_toLeftOf="@id/detailThumbsDownImgView" android:layout_toLeftOf="@id/detailThumbsDownImgView"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="111.111" /> android:text="111.111" />
<ImageView android:id="@+id/detailThumbsUpImgView" <ImageView android:id="@+id/detailThumbsUpImgView"
@ -117,7 +110,6 @@
android:layout_height="20dp" android:layout_height="20dp"
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_toLeftOf="@id/detailThumbsUpCountView" android:layout_toLeftOf="@id/detailThumbsUpCountView"
android:visibility="invisible"
android:src="@drawable/thumbs_up" /> android:src="@drawable/thumbs_up" />
<TextView android:id="@+id/detailUploadDateView" <TextView android:id="@+id/detailUploadDateView"
@ -129,7 +121,6 @@
android:paddingRight="6dp" android:paddingRight="6dp"
android:paddingTop="20dp" android:paddingTop="20dp"
android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance="?android:attr/textAppearanceLarge"
android:visibility="invisible"
android:text="Uploaded at: 45.64.1285" /> android:text="Uploaded at: 45.64.1285" />
<TextView android:id="@+id/detailDescriptionView" <TextView android:id="@+id/detailDescriptionView"
@ -140,14 +131,62 @@
android:paddingLeft="6dp" android:paddingLeft="6dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmodtempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. " android:text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmodtempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. "
/> />
<TextView android:id="@+id/detailNextVideoTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/detailDescriptionView"
android:layout_alignParentLeft="true"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingTop="20dp"
android:paddingBottom="6dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black"
android:text="@string/nextVideoTitle"
/>
<View android:id="@+id/detailNextVideoSeperationLine"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:background="@android:color/darker_gray"
android:layout_below="@id/detailNextVideoTitle"
android:layout_alignParentLeft="true" />
<RelativeLayout android:id="@+id/detailNextVidButtonAndContantLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/detailNextVideoSeperationLine">
<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>
<View android:id="@+id/detailNextVideoSeperationLineEnd"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:background="@android:color/darker_gray"
android:layout_below="@id/detailNextVidButtonAndContantLayout"
android:layout_alignParentLeft="true" />
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="100dp" android:layout_height="100dip"
android:layout_below="@id/detailDescriptionView"/> android:layout_below="@id/detailNextVideoSeperationLineEnd"/>
</RelativeLayout> </RelativeLayout>
</ScrollView> </ScrollView>

View File

@ -6,7 +6,8 @@
style="?android:attr/textAppearanceLarge" style="?android:attr/textAppearanceLarge"
tools:context=".VideoItemDetailFragment" tools:context=".VideoItemDetailFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:id="@+id/videoitem_detail">
<ProgressBar android:id="@+id/detailProgressBar" <ProgressBar android:id="@+id/detailProgressBar"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -15,10 +16,11 @@
android:indeterminate="true"/> android:indeterminate="true"/>
<ScrollView <ScrollView
android:id="@+id/videoitem_detail" 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:textIsSelectable="true"> android:textIsSelectable="true"
android:visibility="invisible">
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -31,8 +33,7 @@
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:src="@drawable/dummi_thumbnail" android:src="@drawable/dummi_thumbnail"/>
android:visibility="invisible"/>
<TextView android:id="@+id/detailVideoTitleView" <TextView android:id="@+id/detailVideoTitleView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -42,8 +43,7 @@
android:paddingLeft="6dp" android:paddingLeft="6dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Bla blabla !!!" android:text="Bla blabla !!!"/>
android:visibility="invisible"/>
<ImageView android:id="@+id/detailUploaderThumbnailView" <ImageView android:id="@+id/detailUploaderThumbnailView"
android:layout_width="80dp" android:layout_width="80dp"
@ -53,7 +53,6 @@
android:paddingRight="5dp" android:paddingRight="5dp"
android:layout_below="@id/detailVideoTitleView" android:layout_below="@id/detailVideoTitleView"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:visibility="invisible"
android:src="@drawable/budy" /> android:src="@drawable/budy" />
<TextView android:id="@+id/detailUploaderView" <TextView android:id="@+id/detailUploaderView"
@ -64,7 +63,6 @@
android:paddingLeft="6dp" android:paddingLeft="6dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="Herr von Gurken" /> android:text="Herr von Gurken" />
<View android:id="@+id/textSeperationLine" <View android:id="@+id/textSeperationLine"
@ -73,7 +71,6 @@
android:background="@android:color/darker_gray" android:background="@android:color/darker_gray"
android:layout_below="@id/detailUploaderView" android:layout_below="@id/detailUploaderView"
android:paddingTop="20dp" android:paddingTop="20dp"
android:visibility="invisible"
android:layout_alignParentLeft="true" /> android:layout_alignParentLeft="true" />
<TextView android:id="@+id/detailViewCountView" <TextView android:id="@+id/detailViewCountView"
@ -83,7 +80,6 @@
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:paddingTop="70dp" android:paddingTop="70dp"
android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance="?android:attr/textAppearanceLarge"
android:visibility="invisible"
android:text="1.000.115 views" /> android:text="1.000.115 views" />
<TextView android:id="@+id/detailThumbsDownCountView" <TextView android:id="@+id/detailThumbsDownCountView"
@ -92,7 +88,6 @@
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="5.000" /> android:text="5.000" />
<ImageView android:id="@+id/detailThumbsDownImgView" <ImageView android:id="@+id/detailThumbsDownImgView"
@ -100,7 +95,6 @@
android:layout_height="20dp" android:layout_height="20dp"
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_toLeftOf="@id/detailThumbsDownCountView" android:layout_toLeftOf="@id/detailThumbsDownCountView"
android:visibility="invisible"
android:src="@drawable/thumbs_down" /> android:src="@drawable/thumbs_down" />
<TextView android:id="@+id/detailThumbsUpCountView" <TextView android:id="@+id/detailThumbsUpCountView"
@ -109,7 +103,6 @@
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_toLeftOf="@id/detailThumbsDownImgView" android:layout_toLeftOf="@id/detailThumbsDownImgView"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="111.111" /> android:text="111.111" />
<ImageView android:id="@+id/detailThumbsUpImgView" <ImageView android:id="@+id/detailThumbsUpImgView"
@ -117,7 +110,6 @@
android:layout_height="20dp" android:layout_height="20dp"
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_toLeftOf="@id/detailThumbsUpCountView" android:layout_toLeftOf="@id/detailThumbsUpCountView"
android:visibility="invisible"
android:src="@drawable/thumbs_up" /> android:src="@drawable/thumbs_up" />
<TextView android:id="@+id/detailUploadDateView" <TextView android:id="@+id/detailUploadDateView"
@ -129,7 +121,6 @@
android:paddingRight="6dp" android:paddingRight="6dp"
android:paddingTop="20dp" android:paddingTop="20dp"
android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance="?android:attr/textAppearanceLarge"
android:visibility="invisible"
android:text="Uploaded at: 45.64.1285" /> android:text="Uploaded at: 45.64.1285" />
<TextView android:id="@+id/detailDescriptionView" <TextView android:id="@+id/detailDescriptionView"
@ -140,14 +131,62 @@
android:paddingLeft="6dp" android:paddingLeft="6dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmodtempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. " android:text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmodtempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. "
/> />
<TextView android:id="@+id/detailNextVideoTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/detailDescriptionView"
android:layout_alignParentLeft="true"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingTop="20dp"
android:paddingBottom="6dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black"
android:text="@string/nextVideoTitle"
/>
<View android:id="@+id/detailNextVideoSeperationLine"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:background="@android:color/darker_gray"
android:layout_below="@id/detailNextVideoTitle"
android:layout_alignParentLeft="true" />
<RelativeLayout android:id="@+id/detailNextVidButtonAndContantLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/detailNextVideoSeperationLine">
<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>
<View android:id="@+id/detailNextVideoSeperationLineEnd"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:background="@android:color/darker_gray"
android:layout_below="@id/detailNextVidButtonAndContantLayout"
android:layout_alignParentLeft="true" />
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="100dp" android:layout_height="100dip"
android:layout_below="@id/detailDescriptionView"/> android:layout_below="@id/detailNextVideoSeperationLineEnd"/>
</RelativeLayout> </RelativeLayout>
</ScrollView> </ScrollView>

View File

@ -7,7 +7,8 @@
android:textIsSelectable="true" android:textIsSelectable="true"
style="?android:attr/textAppearanceLarge" style="?android:attr/textAppearanceLarge"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:id="@+id/videoitem_detail">
<ProgressBar android:id="@+id/detailProgressBar" <ProgressBar android:id="@+id/detailProgressBar"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -16,9 +17,11 @@
android:indeterminate="true"/> android:indeterminate="true"/>
<ScrollView <ScrollView
android:id="@+id/videoitem_detail" 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="invisible">
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -30,7 +33,6 @@
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:visibility="invisible"
android:src="@drawable/dummi_thumbnail"/> android:src="@drawable/dummi_thumbnail"/>
<TextView android:id="@+id/detailVideoTitleView" <TextView android:id="@+id/detailVideoTitleView"
@ -42,7 +44,6 @@
android:paddingRight="6dp" android:paddingRight="6dp"
android:paddingBottom="20dp" android:paddingBottom="20dp"
android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance="?android:attr/textAppearanceLarge"
android:visibility="invisible"
android:text="Bla blabla !!!"/> android:text="Bla blabla !!!"/>
<ImageView android:id="@+id/detailUploaderThumbnailView" <ImageView android:id="@+id/detailUploaderThumbnailView"
@ -53,7 +54,6 @@
android:paddingRight="2dp" android:paddingRight="2dp"
android:layout_below="@id/detailVideoTitleView" android:layout_below="@id/detailVideoTitleView"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:visibility="invisible"
android:src="@drawable/budy" /> android:src="@drawable/budy" />
<TextView android:id="@+id/detailUploaderView" <TextView android:id="@+id/detailUploaderView"
@ -64,7 +64,6 @@
android:paddingLeft="6dp" android:paddingLeft="6dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="Herr von Gurken" /> android:text="Herr von Gurken" />
<TextView android:id="@+id/detailViewCountView" <TextView android:id="@+id/detailViewCountView"
@ -76,7 +75,6 @@
android:paddingRight="16dp" android:paddingRight="16dp"
android:paddingLeft="16dp" android:paddingLeft="16dp"
android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance="?android:attr/textAppearanceLarge"
android:visibility="invisible"
android:text="drölf views" /> android:text="drölf views" />
<TextView android:id="@+id/detailThumbsDownCountView" <TextView android:id="@+id/detailThumbsDownCountView"
@ -87,7 +85,6 @@
android:paddingRight="16dp" android:paddingRight="16dp"
android:paddingLeft="16dp" android:paddingLeft="16dp"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="-5.000" /> android:text="-5.000" />
<ImageView android:id="@+id/detailThumbsDownImgView" <ImageView android:id="@+id/detailThumbsDownImgView"
@ -95,7 +92,6 @@
android:layout_height="20dp" android:layout_height="20dp"
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_toLeftOf="@id/detailThumbsDownCountView" android:layout_toLeftOf="@id/detailThumbsDownCountView"
android:visibility="invisible"
android:src="@drawable/thumbs_down" /> android:src="@drawable/thumbs_down" />
<TextView android:id="@+id/detailThumbsUpCountView" <TextView android:id="@+id/detailThumbsUpCountView"
@ -104,7 +100,6 @@
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_toLeftOf="@id/detailThumbsDownImgView" android:layout_toLeftOf="@id/detailThumbsDownImgView"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="∞" /> android:text="∞" />
<ImageView android:id="@+id/detailThumbsUpImgView" <ImageView android:id="@+id/detailThumbsUpImgView"
@ -112,7 +107,6 @@
android:layout_height="20dp" android:layout_height="20dp"
android:layout_below="@id/detailViewCountView" android:layout_below="@id/detailViewCountView"
android:layout_toLeftOf="@id/detailThumbsUpCountView" android:layout_toLeftOf="@id/detailThumbsUpCountView"
android:visibility="invisible"
android:src="@drawable/thumbs_up" /> android:src="@drawable/thumbs_up" />
<TextView android:id="@+id/detailUploadDateView" <TextView android:id="@+id/detailUploadDateView"
@ -124,7 +118,6 @@
android:paddingRight="6dp" android:paddingRight="6dp"
android:paddingTop="20dp" android:paddingTop="20dp"
android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance="?android:attr/textAppearanceLarge"
android:visibility="invisible"
android:text="Uploaded at: 45.64.1285" /> android:text="Uploaded at: 45.64.1285" />
<TextView android:id="@+id/detailDescriptionView" <TextView android:id="@+id/detailDescriptionView"
@ -135,14 +128,62 @@
android:paddingLeft="6dp" android:paddingLeft="6dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
android:text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmodtempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. " android:text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmodtempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. "
/> />
<TextView android:id="@+id/detailNextVideoTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/detailDescriptionView"
android:layout_alignParentLeft="true"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingTop="20dp"
android:paddingBottom="6dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black"
android:text="@string/nextVideoTitle"
/>
<View android:id="@+id/detailNextVideoSeperationLine"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:background="@android:color/darker_gray"
android:layout_below="@id/detailNextVideoTitle"
android:layout_alignParentLeft="true" />
<RelativeLayout android:id="@+id/detailNextVidButtonAndContantLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/detailNextVideoSeperationLine">
<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>
<View android:id="@+id/detailNextVideoSeperationLineEnd"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:background="@android:color/darker_gray"
android:layout_below="@id/detailNextVidButtonAndContantLayout"
android:layout_alignParentLeft="true" />
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="100dp" android:layout_height="100dip"
android:layout_below="@id/detailDescriptionView"/> android:layout_below="@id/detailNextVideoSeperationLineEnd"/>
</RelativeLayout> </RelativeLayout>
</ScrollView> </ScrollView>

View File

@ -7,8 +7,9 @@
android:padding="6dp"> android:padding="6dp">
<ImageView android:id="@+id/itemThumbnailView" <ImageView android:id="@+id/itemThumbnailView"
android:layout_width="125dp" android:layout_width="142dp"
android:layout_height="80dp" android:layout_height="80dp"
android:scaleType="centerCrop"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:src="@drawable/dummi_thumbnail"/> android:src="@drawable/dummi_thumbnail"/>

View File

@ -3,7 +3,7 @@
<string name="app_name">NewPipe</string> <string name="app_name">NewPipe</string>
<string name="title_videoitem_detail">NewPipe</string> <string name="title_videoitem_detail">NewPipe</string>
<string name="nothingFound">Nichts gefunden</string> <string name="nothingFound">Nichts gefunden</string>
<string name="viewSufix">views</string> <string name="viewSufix">Aufrufe</string>
<string name="uploadDatePrefix">Hochgeladen am: </string> <string name="uploadDatePrefix">Hochgeladen am: </string>
<string name="noPlayerFound">Keinen Streamplayer gefunden. Vielleicht möchtest du einen installieren.</string> <string name="noPlayerFound">Keinen Streamplayer gefunden. Vielleicht möchtest du einen installieren.</string>
<string name="installStreamPlayer">Jetzt installieren</string> <string name="installStreamPlayer">Jetzt installieren</string>
@ -45,4 +45,5 @@
<item>Video</item> <item>Video</item>
<item>Audio</item> <item>Audio</item>
</string-array> </string-array>
<string name="nextVideoTitle">Nächstes Video</string>
</resources> </resources>

View File

@ -45,4 +45,5 @@
<item>Video</item> <item>Video</item>
<item>Audio</item> <item>Audio</item>
</string-array> </string-array>
<string name="nextVideoTitle">Next Video</string>
</resources> </resources>