Add duration view to video detail fragment

- Add "textAllCaps" to the mini stream layout
- Closes #609
This commit is contained in:
Mauricio Colli 2018-03-10 13:16:51 -03:00
parent 594c55afa6
commit 562f7e7e41
No known key found for this signature in database
GPG Key ID: F200BFD6F29DDD85
12 changed files with 43 additions and 17 deletions

View File

@ -16,7 +16,6 @@ import android.support.v4.content.ContextCompat;
import android.support.v4.view.animation.FastOutSlowInInterpolator; import android.support.v4.view.animation.FastOutSlowInInterpolator;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.text.Html; import android.text.Html;
import android.text.Spanned; import android.text.Spanned;
import android.text.TextUtils; import android.text.TextUtils;
@ -92,8 +91,6 @@ import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import static org.schabi.newpipe.util.AnimationUtils.animateView; import static org.schabi.newpipe.util.AnimationUtils.animateView;
@ -138,9 +135,9 @@ public class VideoDetailFragment
/*////////////////////////////////////////////////////////////////////////// /*//////////////////////////////////////////////////////////////////////////
// Views // Views
//////////////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////////////*/
private Menu menu; private Menu menu;
private Toolbar toolbar;
private Spinner spinnerToolbar; private Spinner spinnerToolbar;
private ParallaxScrollView parallaxScrollRootView; private ParallaxScrollView parallaxScrollRootView;
@ -160,6 +157,7 @@ public class VideoDetailFragment
private TextView detailControlsAddToPlaylist; private TextView detailControlsAddToPlaylist;
private TextView detailControlsDownload; private TextView detailControlsDownload;
private TextView appendControlsDetail; private TextView appendControlsDetail;
private TextView detailDurationView;
private LinearLayout videoDescriptionRootLayout; private LinearLayout videoDescriptionRootLayout;
private TextView videoUploadDateView; private TextView videoUploadDateView;
@ -461,9 +459,7 @@ public class VideoDetailFragment
@Override @Override
protected void initViews(View rootView, Bundle savedInstanceState) { protected void initViews(View rootView, Bundle savedInstanceState) {
super.initViews(rootView, savedInstanceState); super.initViews(rootView, savedInstanceState);
spinnerToolbar = activity.findViewById(R.id.toolbar).findViewById(R.id.toolbar_spinner);
toolbar = activity.findViewById(R.id.toolbar);
spinnerToolbar = toolbar.findViewById(R.id.toolbar_spinner);
parallaxScrollRootView = rootView.findViewById(R.id.detail_main_content); parallaxScrollRootView = rootView.findViewById(R.id.detail_main_content);
@ -483,6 +479,7 @@ public class VideoDetailFragment
detailControlsAddToPlaylist = rootView.findViewById(R.id.detail_controls_playlist_append); detailControlsAddToPlaylist = rootView.findViewById(R.id.detail_controls_playlist_append);
detailControlsDownload = rootView.findViewById(R.id.detail_controls_download); detailControlsDownload = rootView.findViewById(R.id.detail_controls_download);
appendControlsDetail = rootView.findViewById(R.id.touch_append_detail); appendControlsDetail = rootView.findViewById(R.id.touch_append_detail);
detailDurationView = rootView.findViewById(R.id.detail_duration_view);
videoDescriptionRootLayout = rootView.findViewById(R.id.detail_description_root_layout); videoDescriptionRootLayout = rootView.findViewById(R.id.detail_description_root_layout);
videoUploadDateView = rootView.findViewById(R.id.detail_upload_date_view); videoUploadDateView = rootView.findViewById(R.id.detail_upload_date_view);
@ -1098,6 +1095,7 @@ public class VideoDetailFragment
animateView(contentRootLayoutHiding, false, 200); animateView(contentRootLayoutHiding, false, 200);
animateView(spinnerToolbar, false, 200); animateView(spinnerToolbar, false, 200);
animateView(thumbnailPlayButton, false, 50); animateView(thumbnailPlayButton, false, 50);
animateView(detailDurationView, false, 100);
videoTitleTextView.setText(name != null ? name : ""); videoTitleTextView.setText(name != null ? name : "");
videoTitleTextView.setMaxLines(1); videoTitleTextView.setMaxLines(1);
@ -1168,6 +1166,18 @@ public class VideoDetailFragment
thumbsDisabledTextView.setVisibility(View.GONE); thumbsDisabledTextView.setVisibility(View.GONE);
} }
if (info.getDuration() > 0) {
detailDurationView.setText(Localization.getDurationString(info.getDuration()));
detailDurationView.setBackgroundColor(ContextCompat.getColor(activity, R.color.duration_background_color));
animateView(detailDurationView, true, 100);
} else if (info.getStreamType() == StreamType.LIVE_STREAM) {
detailDurationView.setText(R.string.duration_live);
detailDurationView.setBackgroundColor(ContextCompat.getColor(activity, R.color.live_duration_background_color));
animateView(detailDurationView, true, 100);
} else {
detailDurationView.setVisibility(View.GONE);
}
videoTitleRoot.setClickable(true); videoTitleRoot.setClickable(true);
videoTitleToggleArrow.setVisibility(View.VISIBLE); videoTitleToggleArrow.setVisibility(View.VISIBLE);
videoTitleToggleArrow.setImageResource(R.drawable.arrow_down); videoTitleToggleArrow.setImageResource(R.drawable.arrow_down);
@ -1201,7 +1211,6 @@ public class VideoDetailFragment
case AUDIO_LIVE_STREAM: case AUDIO_LIVE_STREAM:
detailControlsDownload.setVisibility(View.GONE); detailControlsDownload.setVisibility(View.GONE);
spinnerToolbar.setVisibility(View.GONE); spinnerToolbar.setVisibility(View.GONE);
toolbar.setTitle(R.string.live);
break; break;
default: default:
if (!info.video_streams.isEmpty() || !info.video_only_streams.isEmpty()) break; if (!info.video_streams.isEmpty() || !info.video_only_streams.isEmpty()) break;

View File

@ -70,6 +70,31 @@
android:visibility="gone" android:visibility="gone"
tools:ignore="RtlHardcoded" tools:ignore="RtlHardcoded"
tools:visibility="visible"/> tools:visibility="visible"/>
<TextView
android:id="@+id/detail_duration_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginBottom="8dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_marginTop="8dp"
android:alpha=".6"
android:background="#23000000"
android:gravity="center"
android:paddingBottom="2dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingTop="2dp"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textSize="12sp"
android:textStyle="bold"
android:visibility="gone"
tools:ignore="RtlHardcoded"
tools:text="12:38"
tools:visibility="visible"/>
</FrameLayout> </FrameLayout>
<!-- CONTENT --> <!-- CONTENT -->

View File

@ -36,6 +36,7 @@
android:paddingLeft="@dimen/video_item_search_duration_horizontal_padding" android:paddingLeft="@dimen/video_item_search_duration_horizontal_padding"
android:paddingRight="@dimen/video_item_search_duration_horizontal_padding" android:paddingRight="@dimen/video_item_search_duration_horizontal_padding"
android:paddingTop="@dimen/video_item_search_duration_vertical_padding" android:paddingTop="@dimen/video_item_search_duration_vertical_padding"
android:textAllCaps="true"
android:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/duration_text_color" android:textColor="@color/duration_text_color"
android:textSize="@dimen/video_item_search_duration_text_size" android:textSize="@dimen/video_item_search_duration_text_size"

View File

@ -408,7 +408,6 @@ abrir en modo popup</string>
<string name="use_inexact_seek_summary">La búsqueda inexacta permite al reproductor buscar posiciones más rápido con menor precisión</string> <string name="use_inexact_seek_summary">La búsqueda inexacta permite al reproductor buscar posiciones más rápido con menor precisión</string>
<string name="auto_queue_title">Auto-encolar la siguiente transmisión</string> <string name="auto_queue_title">Auto-encolar la siguiente transmisión</string>
<string name="auto_queue_summary">"Automáticamente añadir un vídeo relacionado cuando el reproductor llegue al último vídeo en una lista de reproducción no repetible. "</string> <string name="auto_queue_summary">"Automáticamente añadir un vídeo relacionado cuando el reproductor llegue al último vídeo en una lista de reproducción no repetible. "</string>
<string name="live">DIRECTO</string>
<string name="live_sync">SINCRONIZAR</string> <string name="live_sync">SINCRONIZAR</string>
</resources> </resources>

View File

@ -308,5 +308,4 @@
<string name="export_data_title">יצוא מסד נתונים</string> <string name="export_data_title">יצוא מסד נתונים</string>
<string name="external_player_unsupported_link_type">נגנים חיצוניים לא תומכים בסוגי קישורים אלה</string> <string name="external_player_unsupported_link_type">נגנים חיצוניים לא תומכים בסוגי קישורים אלה</string>
<string name="invalid_url_toast">כתובת שגויה</string> <string name="invalid_url_toast">כתובת שגויה</string>
<string name="live">חי</string>
</resources> </resources>

View File

@ -409,7 +409,6 @@
<string name="use_inexact_seek_summary">La ricerca imprecisa permette al riproduttore di spostarti nelle posizioni più velocemente con una precisione ridotta</string> <string name="use_inexact_seek_summary">La ricerca imprecisa permette al riproduttore di spostarti nelle posizioni più velocemente con una precisione ridotta</string>
<string name="auto_queue_title">Metti in coda automaticamente il prossimo flusso</string> <string name="auto_queue_title">Metti in coda automaticamente il prossimo flusso</string>
<string name="auto_queue_summary">Aggiungi automaticamente un flusso correlato mentre il playback parte dall\'ultimo flusso in una cosa non ripetitiva.</string> <string name="auto_queue_summary">Aggiungi automaticamente un flusso correlato mentre il playback parte dall\'ultimo flusso in una cosa non ripetitiva.</string>
<string name="live">IN DIRETTA</string>
<string name="live_sync">SINCRONIZZAZIONE</string> <string name="live_sync">SINCRONIZZAZIONE</string>
</resources> </resources>

View File

@ -404,7 +404,6 @@ te openen in pop-upmodus</string>
<string name="use_inexact_seek_summary">Minder exact spoelen laat de speler sneller posities zoeken met verminderde precisie</string> <string name="use_inexact_seek_summary">Minder exact spoelen laat de speler sneller posities zoeken met verminderde precisie</string>
<string name="auto_queue_title">Volgende stream automatisch in wachtrij plaatsen</string> <string name="auto_queue_title">Volgende stream automatisch in wachtrij plaatsen</string>
<string name="auto_queue_summary">Automatisch een gerealteerde stream toekennen als het afspelen van de laatste stream strat in een niet-herhalende afspeelwachtlijst.</string> <string name="auto_queue_summary">Automatisch een gerealteerde stream toekennen als het afspelen van de laatste stream strat in een niet-herhalende afspeelwachtlijst.</string>
<string name="live">LIVE</string>
<string name="live_sync">SYNCHRONISEREN</string> <string name="live_sync">SYNCHRONISEREN</string>
</resources> </resources>

View File

@ -383,7 +383,6 @@ abrir em modo popup</string>
<string name="use_inexact_seek_summary">Usar índice de indexação inexato</string> <string name="use_inexact_seek_summary">Usar índice de indexação inexato</string>
<string name="auto_queue_title">Adicionar a próxima stream à fila automaticamente</string> <string name="auto_queue_title">Adicionar a próxima stream à fila automaticamente</string>
<string name="auto_queue_summary">Anexar automaticamente uma stream relacionada quando a reprodução iniciar na última stream em uma fila não repetitiva</string> <string name="auto_queue_summary">Anexar automaticamente uma stream relacionada quando a reprodução iniciar na última stream em uma fila não repetitiva</string>
<string name="live">Ao Vivo</string>
<string name="live_sync">Sincronizar</string> <string name="live_sync">Sincronizar</string>
</resources> </resources>

View File

@ -399,7 +399,6 @@
<string name="use_inexact_seek_summary">İsabetsiz konumlama, oynatıcının konumları düşürülmüş duyarlıkla saptamasını sağlar</string> <string name="use_inexact_seek_summary">İsabetsiz konumlama, oynatıcının konumları düşürülmüş duyarlıkla saptamasını sağlar</string>
<string name="auto_queue_title">Sonraki akışı kendiliğinden kuyrukla</string> <string name="auto_queue_title">Sonraki akışı kendiliğinden kuyrukla</string>
<string name="auto_queue_summary">Yinelemeyen oynatma kuyruğundaki son akış başladığında ilişkili akışı kuyruğun sonuna kendiliğinden ekle.</string> <string name="auto_queue_summary">Yinelemeyen oynatma kuyruğundaki son akış başladığında ilişkili akışı kuyruğun sonuna kendiliğinden ekle.</string>
<string name="live">CANLI</string>
<string name="live_sync">EŞZAMANLA</string> <string name="live_sync">EŞZAMANLA</string>
</resources> </resources>

View File

@ -390,7 +390,6 @@
<string name="use_inexact_seek_summary">Неточне шукання дозволяє програвачеві рухатися позиціями швидше, проте з меншою точністю</string> <string name="use_inexact_seek_summary">Неточне шукання дозволяє програвачеві рухатися позиціями швидше, проте з меншою точністю</string>
<string name="auto_queue_title">Автоматично додати до черги наступний стрим</string> <string name="auto_queue_title">Автоматично додати до черги наступний стрим</string>
<string name="auto_queue_summary">Автоматично додавати пов\'язаний стрим, під час початку програвання останнього стриму.</string> <string name="auto_queue_summary">Автоматично додавати пов\'язаний стрим, під час початку програвання останнього стриму.</string>
<string name="live">НАЖИВО</string>
<string name="live_sync">СИНХРОНІЗАЦІЯ</string> <string name="live_sync">СИНХРОНІЗАЦІЯ</string>
</resources> </resources>

View File

@ -385,7 +385,6 @@
<string name="use_inexact_seek_summary">不精確的尋找,允許玩家以更低的精確更快找到位置</string> <string name="use_inexact_seek_summary">不精確的尋找,允許玩家以更低的精確更快找到位置</string>
<string name="auto_queue_title">自動佇列下一個串流</string> <string name="auto_queue_title">自動佇列下一個串流</string>
<string name="auto_queue_summary">在非重複播放佇列中的最後一個串流上開始播放時,自動附上相關串流。</string> <string name="auto_queue_summary">在非重複播放佇列中的最後一個串流上開始播放時,自動附上相關串流。</string>
<string name="live">直播</string>
<string name="live_sync">同步</string> <string name="live_sync">同步</string>
</resources> </resources>

View File

@ -113,7 +113,6 @@
<string name="show_age_restricted_content_title">Show age restricted content</string> <string name="show_age_restricted_content_title">Show age restricted content</string>
<string name="video_is_age_restricted">Age Restricted Video. Allowing such material is possible from Settings.</string> <string name="video_is_age_restricted">Age Restricted Video. Allowing such material is possible from Settings.</string>
<string name="duration_live">live</string> <string name="duration_live">live</string>
<string name="live">LIVE</string>
<string name="downloads">Downloads</string> <string name="downloads">Downloads</string>
<string name="downloads_title">Downloads</string> <string name="downloads_title">Downloads</string>
<string name="error_report_title">Error report</string> <string name="error_report_title">Error report</string>