Move speed dialog to the bottom (#5464)

This commit is contained in:
ByteHamster 2021-10-12 21:14:08 +02:00 committed by GitHub
parent f6c8a8c0f7
commit a73a932a7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 59 additions and 56 deletions

View File

@ -246,7 +246,6 @@ public class PreferencesTest {
clickPreference(R.string.playback_speed);
onView(isRoot()).perform(waitForView(withText("0.75"), 1000));
onView(withText("0.75")).check(matches(isDisplayed()));
onView(withText(R.string.close_label)).perform(click());
}
@Test

View File

@ -1,15 +1,17 @@
package de.danoeh.antennapod.dialog;
import android.app.Dialog;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.google.android.material.chip.Chip;
import com.google.android.material.snackbar.Snackbar;
import de.danoeh.antennapod.R;
@ -25,7 +27,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Locale;
public class VariableSpeedDialog extends DialogFragment {
public class VariableSpeedDialog extends BottomSheetDialogFragment {
private SpeedSelectionAdapter adapter;
private final DecimalFormat speedFormat;
private PlaybackController controller;
@ -70,12 +72,10 @@ public class VariableSpeedDialog extends DialogFragment {
controller = null;
}
@NonNull
@Nullable
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setPositiveButton(R.string.close_label, null);
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View root = View.inflate(getContext(), R.layout.speed_select_dialog, null);
speedSeekBar = root.findViewById(R.id.speed_seek_bar);
RecyclerView selectedSpeedsGrid = root.findViewById(R.id.selected_speeds_grid);
@ -90,9 +90,7 @@ public class VariableSpeedDialog extends DialogFragment {
addCurrentSpeedChip.setCloseIconResource(R.drawable.ic_add);
addCurrentSpeedChip.setOnCloseIconClickListener(v -> addCurrentSpeed());
addCurrentSpeedChip.setOnClickListener(v -> addCurrentSpeed());
builder.setView(root);
return builder.create();
return root;
}
private void addCurrentSpeed() {
@ -114,8 +112,9 @@ public class VariableSpeedDialog extends DialogFragment {
@NonNull
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Chip chip = new Chip(getContext());
chip.setCloseIconVisible(true);
chip.setCloseIconResource(R.drawable.ic_delete);
if (Build.VERSION.SDK_INT >= 17) {
chip.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
}
return new ViewHolder(chip);
}
@ -124,16 +123,19 @@ public class VariableSpeedDialog extends DialogFragment {
float speed = selectedSpeeds.get(position);
holder.chip.setText(speedFormat.format(speed));
holder.chip.setOnCloseIconClickListener(v -> {
holder.chip.setOnLongClickListener(v -> {
selectedSpeeds.remove(speed);
UserPreferences.setPlaybackSpeedArray(selectedSpeeds);
notifyDataSetChanged();
return true;
});
holder.chip.setOnClickListener(v -> {
if (controller != null) {
dismiss();
controller.setPlaybackSpeed(speed);
}
new Handler(Looper.getMainLooper()).postDelayed(() -> {
if (controller != null) {
dismiss();
controller.setPlaybackSpeed(speed);
}
}, 200);
});
}

View File

@ -1,43 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:id="@+id/butDecSpeed"
android:layout_width="32dp"
android:layout_height="32dp"
android:gravity="center"
android:text="-"
android:clickable="true"
android:focusable="true"
android:textStyle="bold"
android:textSize="24sp"
android:textColor="?attr/colorSecondary"
android:contentDescription="@string/decrease_speed"
android:background="?attr/selectableItemBackgroundBorderless"/>
android:id="@+id/butDecSpeed"
android:layout_width="40dp"
android:layout_height="40dp"
android:gravity="center"
android:text="-"
android:clickable="true"
android:focusable="true"
android:textStyle="bold"
android:textSize="24sp"
android:textColor="?attr/colorSecondary"
android:contentDescription="@string/decrease_speed"
android:background="?attr/selectableItemBackgroundBorderless" />
<SeekBar
android:id="@+id/playback_speed"
android:layout_width="0dp"
android:layout_height="32dp"
android:max="70"
android:layout_weight="1" />
android:id="@+id/playback_speed"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:max="70"
android:paddingVertical="4dp"
android:layout_weight="1" />
<TextView
android:id="@+id/butIncSpeed"
android:layout_width="32dp"
android:layout_height="32dp"
android:gravity="center"
android:text="+"
android:clickable="true"
android:focusable="true"
android:textStyle="bold"
android:textSize="24sp"
android:textColor="?attr/colorSecondary"
android:contentDescription="@string/increase_speed"
android:background="?attr/selectableItemBackgroundBorderless" />
</LinearLayout>
android:id="@+id/butIncSpeed"
android:layout_width="40dp"
android:layout_height="40dp"
android:gravity="center"
android:text="+"
android:clickable="true"
android:focusable="true"
android:textStyle="bold"
android:textSize="24sp"
android:textColor="?attr/colorSecondary"
android:contentDescription="@string/increase_speed"
android:background="?attr/selectableItemBackgroundBorderless" />
</LinearLayout>

View File

@ -22,7 +22,7 @@ public class PlaybackSpeedIndicatorView extends View {
private final RectF arcBounds = new RectF();
private float angle = VALUE_UNSET;
private float targetAngle = VALUE_UNSET;
private float degreePerFrame = 2;
private float degreePerFrame = 1.6f;
private float paddingArc = 20;
private float paddingIndicator = 10;