add playhead progress indicator to MediaFragment epsiodes
This commit is contained in:
parent
5b5a74a1de
commit
b2196f11da
|
@ -4,6 +4,7 @@ import android.graphics.Color
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
@ -60,6 +61,14 @@ class EpisodeItemAdapter(
|
||||||
.into(holder.binding.imageEpisode)
|
.into(holder.binding.imageEpisode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// add watched progress
|
||||||
|
val playheadProgress = playheads[ep.id]?.let { playhead ->
|
||||||
|
((playhead.playhead.toFloat() / (ep.durationMs / 1000)) * 100).toInt()
|
||||||
|
} ?: 0
|
||||||
|
holder.binding.progressPlayhead.setProgressCompat(playheadProgress, false)
|
||||||
|
holder.binding.progressPlayhead.visibility = if (playheadProgress <= 0)
|
||||||
|
View.GONE else View.VISIBLE
|
||||||
|
|
||||||
// add watched icon to episode, if the episode id is present in playheads and fullyWatched
|
// add watched icon to episode, if the episode id is present in playheads and fullyWatched
|
||||||
val watchedImage: Drawable? = if (playheads[ep.id]?.fullyWatched == true) {
|
val watchedImage: Drawable? = if (playheads[ep.id]?.fullyWatched == true) {
|
||||||
ContextCompat.getDrawable(context, R.drawable.ic_baseline_check_circle_24)
|
ContextCompat.getDrawable(context, R.drawable.ic_baseline_check_circle_24)
|
||||||
|
|
|
@ -10,21 +10,22 @@
|
||||||
android:paddingBottom="7dp">
|
android:paddingBottom="7dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/linear_episode"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="128dp"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="72dp">
|
||||||
|
|
||||||
<com.google.android.material.imageview.ShapeableImageView
|
<com.google.android.material.imageview.ShapeableImageView
|
||||||
android:id="@+id/image_episode"
|
android:id="@+id/image_episode"
|
||||||
android:layout_width="128dp"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="72dp"
|
android:layout_height="match_parent"
|
||||||
android:contentDescription="@string/component_poster_desc"
|
android:contentDescription="@string/component_poster_desc"
|
||||||
app:shapeAppearance="@style/ShapeAppearance.Teapod.RoundedPoster"
|
app:shapeAppearance="@style/ShapeAppearance.Teapod.RoundedPoster"
|
||||||
app:srcCompat="@color/imagePlacholder" />
|
app:srcCompat="@color/imagePlaceholder" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/image_episode_play"
|
android:id="@+id/image_episode_play"
|
||||||
|
@ -35,6 +36,15 @@
|
||||||
android:contentDescription="@string/button_play"
|
android:contentDescription="@string/button_play"
|
||||||
app:srcCompat="@drawable/ic_baseline_play_arrow_24"
|
app:srcCompat="@drawable/ic_baseline_play_arrow_24"
|
||||||
app:tint="#FFFFFF" />
|
app:tint="#FFFFFF" />
|
||||||
|
|
||||||
|
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||||
|
android:id="@+id/progress_playhead"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
|
android:max="100"
|
||||||
|
app:trackColor="#00FFFFFF"
|
||||||
|
app:trackThickness="2dp" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
@ -7,16 +7,16 @@
|
||||||
android:padding="7dp">
|
android:padding="7dp">
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="192dp"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="108dp">
|
||||||
|
|
||||||
<com.google.android.material.imageview.ShapeableImageView
|
<com.google.android.material.imageview.ShapeableImageView
|
||||||
android:id="@+id/image_episode"
|
android:id="@+id/image_episode"
|
||||||
android:layout_width="192dp"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="108dp"
|
android:layout_height="match_parent"
|
||||||
android:contentDescription="@string/component_poster_desc"
|
android:contentDescription="@string/component_poster_desc"
|
||||||
app:shapeAppearance="@style/ShapeAppearance.Teapod.RoundedPoster"
|
app:shapeAppearance="@style/ShapeAppearance.Teapod.RoundedPoster"
|
||||||
app:srcCompat="@color/imagePlacholder" />
|
app:srcCompat="@color/imagePlaceholder" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/image_episode_play"
|
android:id="@+id/image_episode_play"
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<color name="colorPrimaryLight">#99dc45</color>
|
<color name="colorPrimaryLight">#99dc45</color>
|
||||||
<color name="colorPrimaryDark">#317a00</color>
|
<color name="colorPrimaryDark">#317a00</color>
|
||||||
<color name="colorAccent">#607d8b</color>
|
<color name="colorAccent">#607d8b</color>
|
||||||
<color name="imagePlacholder">#c2c2c2</color>
|
<color name="imagePlaceholder">#c2c2c2</color>
|
||||||
|
|
||||||
<!-- light theme colors -->
|
<!-- light theme colors -->
|
||||||
<color name="themePrimaryLight">#ffffff</color>
|
<color name="themePrimaryLight">#ffffff</color>
|
||||||
|
|
Loading…
Reference in New Issue