summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-03-22 23:07:59 +0100
committerByteHamster <info@bytehamster.com>2020-03-22 23:07:59 +0100
commit467b2ae1a3ac6884dac0581d9620235049258c4a (patch)
tree2d3e71010c29f2c267767804ab71ecd778fb92a7 /app
parent3d7f93771afffb84655a249de173d70dbd895063 (diff)
downloadAntennaPod-467b2ae1a3ac6884dac0581d9620235049258c4a.zip
Created audio player fragment
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java5
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java37
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java1
-rw-r--r--app/src/main/res/layout/audioplayer_fragment.xml233
4 files changed, 276 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
index 6dab5ab45..35328f0c3 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -31,6 +31,7 @@ import de.danoeh.antennapod.core.util.Flavors;
import de.danoeh.antennapod.core.util.StorageUtils;
import de.danoeh.antennapod.dialog.RatingDialog;
import de.danoeh.antennapod.fragment.AddFeedFragment;
+import de.danoeh.antennapod.fragment.AudioPlayerFragment;
import de.danoeh.antennapod.fragment.DownloadsFragment;
import de.danoeh.antennapod.fragment.EpisodesFragment;
import de.danoeh.antennapod.fragment.ExternalPlayerFragment;
@@ -158,6 +159,9 @@ public class MainActivity extends CastEnabledActivity {
case QueueFragment.TAG:
fragment = new QueueFragment();
break;
+ case AudioPlayerFragment.TAG:
+ fragment = new AudioPlayerFragment();
+ break;
case EpisodesFragment.TAG:
fragment = new EpisodesFragment();
break;
@@ -305,6 +309,7 @@ public class MainActivity extends CastEnabledActivity {
switch (NavDrawerFragment.getLastNavFragment(this)) {
case QueueFragment.TAG:
case EpisodesFragment.TAG:
+ case AudioPlayerFragment.TAG:
requestCastButton(MenuItem.SHOW_AS_ACTION_IF_ROOM);
return retVal;
case DownloadsFragment.TAG:
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
new file mode 100644
index 000000000..6b6b07d82
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
@@ -0,0 +1,37 @@
+package de.danoeh.antennapod.fragment;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import de.danoeh.antennapod.R;
+
+/**
+ * Shows the audio player.
+ */
+public class AudioPlayerFragment extends Fragment {
+ public static final String TAG = "AudioPlayerFragment";
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ super.onCreateView(inflater, container, savedInstanceState);
+ View root = inflater.inflate(R.layout.audioplayer_fragment, container, false);
+ ((AppCompatActivity) getActivity()).setSupportActionBar(root.findViewById(R.id.toolbar));
+
+
+ return root;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setRetainInstance(true);
+
+ // So, we certainly *don't* have an options menu,
+ // but unless we say we do, old options menus sometimes
+ // persist. mfietz thinks this causes the ActionBar to be invalidated
+ setHasOptionsMenu(true);
+ }
+}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java
index 63969345c..0ab6b78b9 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java
@@ -56,6 +56,7 @@ public class NavDrawerFragment extends Fragment implements AdapterView.OnItemCli
public static final String TAG = "NavDrawerFragment";
public static final String[] NAV_DRAWER_TAGS = {
+ AudioPlayerFragment.TAG,
QueueFragment.TAG,
EpisodesFragment.TAG,
SubscriptionFragment.TAG,
diff --git a/app/src/main/res/layout/audioplayer_fragment.xml b/app/src/main/res/layout/audioplayer_fragment.xml
new file mode 100644
index 000000000..bac3cb648
--- /dev/null
+++ b/app/src/main/res/layout/audioplayer_fragment.xml
@@ -0,0 +1,233 @@
+<?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"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <androidx.appcompat.widget.Toolbar
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="?attr/actionBarSize"
+ android:theme="?attr/actionBarTheme"
+ android:layout_alignParentTop="true"
+ android:id="@+id/toolbar"/>
+
+ <de.danoeh.antennapod.view.PagerIndicatorView
+ android:id="@+id/page_indicator"
+ android:layout_height="16dp"
+ android:layout_width="40dp"
+ android:layout_marginTop="-12dp"
+ android:padding="4dp"
+ android:layout_below="@id/toolbar"
+ android:layout_centerHorizontal="true"/>
+
+ <androidx.viewpager.widget.ViewPager
+ android:id="@+id/pager"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_above="@id/playtime_layout"
+ android:layout_below="@id/toolbar"
+ android:foreground="?android:windowContentOverlay"
+ tools:background="@android:color/holo_orange_light"
+ android:layout_marginBottom="12dp"/>
+
+ <SeekBar
+ android:id="@+id/sbPosition"
+ android:layout_width="match_parent"
+ android:layout_height="24dp"
+ android:max="500"
+ tools:progress="100"
+ android:layout_above="@id/playtime_layout"
+ android:layout_marginLeft="8dp"
+ android:layout_marginRight="8dp"
+ android:layoutDirection="ltr"
+ tools:background="@android:color/holo_green_dark"/>
+
+ <LinearLayout
+ android:id="@+id/playtime_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layoutDirection="ltr"
+ android:orientation="vertical">
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp"
+ android:layout_marginBottom="4dp">
+
+ <TextView
+ android:id="@+id/txtvPosition"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
+ android:layout_marginLeft="16dp"
+ android:layout_marginStart="16dp"
+ android:text="@string/position_default_label"
+ android:textColor="?android:attr/textColorSecondary"
+ android:textSize="@dimen/text_size_micro"
+ tools:background="@android:color/holo_green_dark"/>
+
+ <TextView
+ android:id="@+id/txtvLength"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
+ android:layout_marginRight="16dp"
+ android:layout_marginEnd="16dp"
+ android:text="@string/position_default_label"
+ android:textColor="?android:attr/textColorSecondary"
+ android:textSize="@dimen/text_size_micro"
+ tools:background="@android:color/holo_green_dark"/>
+
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/player_control"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="24dp"
+ tools:background="@android:color/holo_purple">
+
+ <ImageButton
+ android:id="@+id/butPlay"
+ android:layout_width="@dimen/audioplayer_playercontrols_length_big"
+ android:layout_height="@dimen/audioplayer_playercontrols_length_big"
+ android:layout_marginLeft="8dp"
+ android:layout_marginStart="8dp"
+ android:layout_marginRight="8dp"
+ android:layout_marginEnd="8dp"
+ android:padding="8dp"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true"
+ android:background="?attr/selectableItemBackgroundBorderless"
+ android:contentDescription="@string/pause_label"
+ app:srcCompat="?attr/av_play"
+ android:scaleType="fitCenter"
+ tools:srcCompat="@drawable/ic_av_play_white_24dp"
+ tools:background="@android:color/holo_green_dark"/>
+
+ <de.danoeh.antennapod.view.CircularProgressBar
+ android:layout_width="@dimen/audioplayer_playercontrols_length_big"
+ android:layout_height="@dimen/audioplayer_playercontrols_length_big"
+ android:layout_marginLeft="16dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginRight="16dp"
+ android:layout_marginEnd="16dp"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true"/>
+
+ <ImageButton
+ android:id="@+id/butRev"
+ android:layout_width="@dimen/audioplayer_playercontrols_length"
+ android:layout_height="@dimen/audioplayer_playercontrols_length"
+ android:layout_toLeftOf="@id/butPlay"
+ android:layout_toStartOf="@id/butPlay"
+ android:layout_marginLeft="8dp"
+ android:layout_marginStart="8dp"
+ android:layout_centerVertical="true"
+ android:background="?attr/selectableItemBackgroundBorderless"
+ android:contentDescription="@string/rewind_label"
+ app:srcCompat="?attr/av_rewind"
+ android:scaleType="fitCenter"
+ tools:srcCompat="@drawable/ic_av_fast_rewind_white_48dp"
+ tools:background="@android:color/holo_blue_dark"/>
+
+ <TextView
+ android:id="@+id/txtvRev"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/butRev"
+ android:layout_alignLeft="@id/butRev"
+ android:layout_alignStart="@id/butRev"
+ android:layout_alignRight="@id/butRev"
+ android:layout_alignEnd="@id/butRev"
+ android:gravity="center"
+ android:text="30"
+ android:textSize="12sp"
+ android:textColor="?android:attr/textColorSecondary"
+ android:clickable="false"/>
+
+ <de.danoeh.antennapod.view.PlaybackSpeedIndicatorView
+ android:id="@+id/butPlaybackSpeed"
+ android:layout_width="@dimen/audioplayer_playercontrols_length"
+ android:layout_height="@dimen/audioplayer_playercontrols_length"
+ android:layout_toLeftOf="@id/butRev"
+ android:layout_toStartOf="@id/butRev"
+ android:layout_centerVertical="true"
+ android:background="?attr/selectableItemBackgroundBorderless"
+ android:contentDescription="@string/set_playback_speed_label"
+ tools:srcCompat="@drawable/ic_playback_speed_white"
+ tools:visibility="gone"
+ tools:background="@android:color/holo_green_dark"/>
+
+ <TextView
+ android:id="@+id/txtvPlaybackSpeed"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/butPlaybackSpeed"
+ android:layout_alignLeft="@id/butPlaybackSpeed"
+ android:layout_alignStart="@id/butPlaybackSpeed"
+ android:layout_alignRight="@id/butPlaybackSpeed"
+ android:layout_alignEnd="@id/butPlaybackSpeed"
+ android:gravity="center"
+ android:text="1.00"
+ android:textSize="12sp"
+ android:textColor="?android:attr/textColorSecondary"
+ android:clickable="false"/>
+
+ <ImageButton
+ android:id="@+id/butFF"
+ android:layout_width="@dimen/audioplayer_playercontrols_length"
+ android:layout_height="@dimen/audioplayer_playercontrols_length"
+ android:layout_toRightOf="@id/butPlay"
+ android:layout_toEndOf="@id/butPlay"
+ android:layout_marginRight="8dp"
+ android:layout_marginEnd="8dp"
+ android:layout_centerVertical="true"
+ android:background="?attr/selectableItemBackgroundBorderless"
+ android:contentDescription="@string/fast_forward_label"
+ app:srcCompat="?attr/av_fast_forward"
+ android:scaleType="fitCenter"
+ tools:srcCompat="@drawable/ic_av_fast_forward_white_48dp"
+ tools:background="@android:color/holo_blue_dark"/>
+
+ <TextView
+ android:id="@+id/txtvFF"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/butFF"
+ android:layout_alignLeft="@id/butFF"
+ android:layout_alignStart="@id/butFF"
+ android:layout_alignRight="@id/butFF"
+ android:layout_alignEnd="@id/butFF"
+ android:gravity="center"
+ android:text="30"
+ android:textSize="12sp"
+ android:textColor="?android:attr/textColorSecondary"
+ android:clickable="false"/>
+
+ <ImageButton
+ android:id="@+id/butSkip"
+ android:layout_width="@dimen/audioplayer_playercontrols_length"
+ android:layout_height="@dimen/audioplayer_playercontrols_length"
+ android:layout_toRightOf="@id/butFF"
+ android:layout_toEndOf="@id/butFF"
+ android:layout_centerVertical="true"
+ android:background="?attr/selectableItemBackgroundBorderless"
+ android:scaleType="fitCenter"
+ app:srcCompat="?attr/av_skip"
+ android:contentDescription="@string/skip_episode_label"
+ tools:srcCompat="@drawable/ic_av_skip_white_48dp"
+ tools:background="@android:color/holo_green_dark"/>
+ </RelativeLayout>
+
+ </LinearLayout>
+
+</RelativeLayout>