Android: Correct SliderSetting minimum value behavior on API < 26

This commit is contained in:
JosJuice 2020-09-29 11:12:55 +02:00
parent 960750003e
commit f065525a48
1 changed files with 10 additions and 28 deletions

View File

@ -2,7 +2,6 @@ package org.dolphinemu.dolphinemu.features.settings.ui;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Build;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -56,6 +55,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
private SettingsItem mClickedItem; private SettingsItem mClickedItem;
private int mClickedPosition; private int mClickedPosition;
private int mSeekbarMinValue;
private int mSeekbarProgress; private int mSeekbarProgress;
private AlertDialog mDialog; private AlertDialog mDialog;
@ -220,6 +220,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
{ {
mClickedItem = item; mClickedItem = item;
mClickedPosition = position; mClickedPosition = position;
mSeekbarMinValue = item.getMin();
mSeekbarProgress = item.getSelectedValue(getSettings()); mSeekbarProgress = item.getSelectedValue(getSettings());
AlertDialog.Builder builder = new AlertDialog.Builder(mView.getActivity(), AlertDialog.Builder builder = new AlertDialog.Builder(mView.getActivity(),
R.style.DolphinDialogBase); R.style.DolphinDialogBase);
@ -240,12 +241,11 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
SeekBar seekbar = view.findViewById(R.id.seekbar); SeekBar seekbar = view.findViewById(R.id.seekbar);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) // TODO: Once we require API 26, uncomment this line and remove the mSeekbarMinValue variable
{ //seekbar.setMin(item.getMin());
seekbar.setMin(item.getMin());
} seekbar.setMax(item.getMax() - mSeekbarMinValue);
seekbar.setMax(item.getMax()); seekbar.setProgress(mSeekbarProgress - mSeekbarMinValue);
seekbar.setProgress(mSeekbarProgress);
seekbar.setKeyProgressIncrement(5); seekbar.setKeyProgressIncrement(5);
seekbar.setOnSeekBarChangeListener(this); seekbar.setOnSeekBarChangeListener(this);
@ -417,16 +417,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
if (sliderSetting.getSelectedValue(getSettings()) != mSeekbarProgress) if (sliderSetting.getSelectedValue(getSettings()) != mSeekbarProgress)
mView.onSettingChanged(); mView.onSettingChanged();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) sliderSetting.setSelectedValue(getSettings(), mSeekbarProgress);
{
sliderSetting.setSelectedValue(getSettings(), mSeekbarProgress);
}
else
{
sliderSetting
.setSelectedValue(getSettings(),
Math.max(mSeekbarProgress, sliderSetting.getMin()));
}
closeDialog(); closeDialog();
} }
@ -436,16 +427,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
if (sliderSetting.getSelectedValue(getSettings()) != mSeekbarProgress) if (sliderSetting.getSelectedValue(getSettings()) != mSeekbarProgress)
mView.onSettingChanged(); mView.onSettingChanged();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) sliderSetting.setSelectedValue(getSettings(), mSeekbarProgress);
{
sliderSetting.setSelectedValue(getSettings(), mSeekbarProgress);
}
else
{
sliderSetting
.setSelectedValue(getSettings(),
Math.max(mSeekbarProgress, sliderSetting.getMin()));
}
closeDialog(); closeDialog();
} }
@ -471,7 +453,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
@Override @Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{ {
mSeekbarProgress = progress; mSeekbarProgress = progress + mSeekbarMinValue;
mTextSliderValue.setText(String.valueOf(mSeekbarProgress)); mTextSliderValue.setText(String.valueOf(mSeekbarProgress));
} }