summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java28
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java22
-rw-r--r--app/src/main/res/layout/audioplayer_fragment.xml4
3 files changed, 46 insertions, 8 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
index 392ef4d07..cd7a6b913 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
@@ -96,6 +96,8 @@ public class AudioPlayerFragment extends Fragment implements
private Disposable disposable;
private boolean showTimeLeft;
private boolean hasChapters = false;
+ private boolean seekedToChapterStart = false;
+ private int currentChapterIndex = -1;
private TabLayoutMediator tabLayoutMediator;
@Override
@@ -418,8 +420,10 @@ public class AudioPlayerFragment extends Fragment implements
if (media != null && media.getChapters() != null) {
setHasChapters(media.getChapters().size() > 0);
+ currentChapterIndex = ChapterUtils.getCurrentChapterIndex(media, controller.getPosition());
} else {
setHasChapters(false);
+ currentChapterIndex = -1;
}
updatePosition(new PlaybackPositionEvent(controller.getPosition(), controller.getDuration()));
updatePlaybackSpeedButton(media);
@@ -496,7 +500,21 @@ public class AudioPlayerFragment extends Fragment implements
float prog = progress / ((float) seekBar.getMax());
TimeSpeedConverter converter = new TimeSpeedConverter(controller.getCurrentPlaybackSpeedMultiplier());
int position = converter.convert((int) (prog * controller.getDuration()));
- txtvSeek.setText(Converter.getDurationStringLong(position));
+ int newChapterIndex = ChapterUtils.getCurrentChapterIndex(controller.getMedia(), position);
+ if (newChapterIndex > -1) {
+ if (!sbPosition.isPressed() && currentChapterIndex != newChapterIndex) {
+ currentChapterIndex = newChapterIndex;
+ position = (int) controller.getMedia().getChapters().get(currentChapterIndex).getStart();
+ seekedToChapterStart = true;
+ controller.seekTo(position);
+ updateUi(controller.getMedia());
+ sbPosition.highlightCurrentChapter();
+ }
+ txtvSeek.setText(controller.getMedia().getChapters().get(newChapterIndex).getTitle()
+ + "\n" + Converter.getDurationStringLong(position));
+ } else {
+ txtvSeek.setText(Converter.getDurationStringLong(position));
+ }
}
}
@@ -515,8 +533,12 @@ public class AudioPlayerFragment extends Fragment implements
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (controller != null) {
- float prog = seekBar.getProgress() / ((float) seekBar.getMax());
- controller.seekTo((int) (prog * controller.getDuration()));
+ if (seekedToChapterStart) {
+ seekedToChapterStart = false;
+ } else {
+ float prog = seekBar.getProgress() / ((float) seekBar.getMax());
+ controller.seekTo((int) (prog * controller.getDuration()));
+ }
}
cardViewSeek.setScaleX(1f);
cardViewSeek.setScaleY(1f);
diff --git a/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java b/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java
index 9752c1464..e002d72ca 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java
@@ -3,6 +3,8 @@ package de.danoeh.antennapod.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
+import android.os.Handler;
+import android.os.Looper;
import android.util.AttributeSet;
import de.danoeh.antennapod.ui.common.ThemeUtils;
@@ -15,6 +17,7 @@ public class ChapterSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
private float progressPrimary;
private float progressSecondary;
private float[] dividerPos;
+ private boolean isHighlighted = false;
private final Paint paintBackground = new Paint();
private final Paint paintProgressPrimary = new Paint();
@@ -59,6 +62,17 @@ public class ChapterSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
}
}
+ public void highlightCurrentChapter() {
+ isHighlighted = true;
+ new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ isHighlighted = false;
+ invalidate();
+ }
+ }, 1000);
+ }
+
@Override
protected synchronized void onDraw(Canvas canvas) {
top = getTop() + density * 7.5f;
@@ -87,7 +101,7 @@ public class ChapterSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
private void drawProgressChapters(Canvas canvas) {
final int saveCount = canvas.save();
int currChapter = 1;
- float chapterMargin = density * 0.6f;
+ float chapterMargin = density * 1.2f;
float topExpanded = getTop() + density * 7;
float bottomExpanded = getBottom() - density * 7;
@@ -95,16 +109,16 @@ public class ChapterSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
for (int i = 1; i < dividerPos.length; i++) {
float right = dividerPos[i] * width - chapterMargin;
- float left = dividerPos[i - 1] * width + chapterMargin;
+ float left = dividerPos[i - 1] * width;
float rightCurr = dividerPos[currChapter] * width - chapterMargin;
- float leftCurr = dividerPos[currChapter - 1] * width + chapterMargin;
+ float leftCurr = dividerPos[currChapter - 1] * width;
canvas.drawRect(left, top, right, bottom, paintBackground);
if (right < progressPrimary) {
currChapter = i + 1;
canvas.drawRect(left, top, right, bottom, paintProgressPrimary);
- } else if (isPressed()) {
+ } else if (isHighlighted || isPressed()) {
canvas.drawRect(leftCurr, topExpanded, rightCurr, bottomExpanded, paintBackground);
canvas.drawRect(leftCurr, topExpanded, progressPrimary, bottomExpanded, paintProgressPrimary);
} else {
diff --git a/app/src/main/res/layout/audioplayer_fragment.xml b/app/src/main/res/layout/audioplayer_fragment.xml
index 73e8ec5e3..3685032e6 100644
--- a/app/src/main/res/layout/audioplayer_fragment.xml
+++ b/app/src/main/res/layout/audioplayer_fragment.xml
@@ -56,6 +56,8 @@
android:alpha="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginLeft="16dp"
+ android:layout_marginRight="16dp"
android:layout_alignBottom="@+id/pager"
android:layout_centerHorizontal="true"
android:layout_marginBottom="12dp"
@@ -74,7 +76,7 @@
android:paddingRight="24dp"
android:paddingBottom="4dp"
android:textColor="@color/white"
- android:textSize="24sp"
+ android:textSize="16sp"
tools:text="1:06:29" />
</androidx.cardview.widget.CardView>