}
private void setupRingProgress(int number) {
- RingProgress mRingProgress = pedMainBinding.ringProgress;
- mRingProgress.setProgress(number);
+ if (pedMainBinding != null) {
+ RingProgress mRingProgress = pedMainBinding.ringProgress;
+ mRingProgress.setProgress(number);
+ }
}
private void setupRingProgressNumberTv(int lastNumber, int number) {
- TextView pedNumber = pedMainBinding.pedNumberTv;
- Typeface typeFace = Typeface.createFromAsset(mContext.getAssets(), "fonts/Baloo2-SemiBold.ttf");
- pedNumber.setTypeface(typeFace);
-
- ValueAnimator animator = ValueAnimator.ofInt(lastNumber, number);
- animator.setDuration(500);
- animator.addUpdateListener(animation -> pedMainBinding.setPedNumber(animation.getAnimatedValue().toString()));
- animator.start();
+ if (pedMainBinding != null) {
+ TextView pedNumber = pedMainBinding.pedNumberTv;
+ Typeface typeFace = Typeface.createFromAsset(mContext.getAssets(), "fonts/Baloo2-SemiBold.ttf");
+ pedNumber.setTypeface(typeFace);
+
+ ValueAnimator animator = ValueAnimator.ofInt(lastNumber, number);
+ animator.setDuration(500);
+ animator.addUpdateListener(animation -> pedMainBinding.setPedNumber(animation.getAnimatedValue().toString()));
+ animator.start();
+ }
}
}
import com.ic.sport.R;
import com.ic.sport.util.SPUtils;
import com.ic.sport.widget.picker.NumericWheelAdapter;
+import com.ic.sport.widget.picker.StepCountAdapter;
import com.ic.sport.widget.picker.WheelView;
public class PedSetupDialogFragment extends DialogFragment {
private WheelView numberPicker;
- private final ArrayMap<Integer, int[]> limil = new ArrayMap<>();
+ private final ArrayMap<Integer, int[]> limit = new ArrayMap<>();
private final String[] UNIT_RES = new String[3];
private final int[] VALUE_CURR = new int[3];
UNIT_RES[1] = getString(R.string.tips_weight_unit);
UNIT_RES[2] = getString(R.string.step_unit);
- limil.put(0, new int[]{30, 250});
- limil.put(1, new int[]{15, 150});
- limil.put(2, new int[]{3000, 50000});
+ limit.put(0, new int[]{30, 250});
+ limit.put(1, new int[]{15, 150});
+ limit.put(2, new int[]{3000, 100000});
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
-
Dialog mDialog = getDialog();
if (mDialog != null) {
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
View popView = inflater.inflate(R.layout.dialog_ped_setup_layout, container);
numberPicker = popView.findViewById(R.id.dialog_value_picker);
- setNumberPicker(limil.get(mCurrType)[0],
- limil.get(mCurrType)[1],
+ setNumberPicker(limit.get(mCurrType)[0],
+ limit.get(mCurrType)[1],
UNIT_RES[mCurrType],
VALUE_CURR[mCurrType]);
ImageView bt = popView.findViewById(R.id.dialog_picker_ok);
bt.setOnClickListener(v -> {
mListener.onDialogUpdate(mCurrType,
- limil.get(mCurrType)[0] + numberPicker.getCurrentItem());
+ limit.get(mCurrType)[0] + numberPicker.getCurrentItem() * numberPicker.getAdapter().getStep());
dismiss();
});
ImageView cancel = popView.findViewById(R.id.dialog_picker_cancel);
}
private void setNumberPicker(final int numberMin, int numberMax, String label, int numberDefault) {
- numberPicker.setAdapter(new NumericWheelAdapter(numberMin, numberMax));
+ if (mCurrType == 2) {
+ numberPicker.setAdapter(new StepCountAdapter(numberMin, numberMax, 1000));
+ } else {
+ numberPicker.setAdapter(new NumericWheelAdapter(numberMin, numberMax));
+ }
numberPicker.setLabel(label);
numberPicker.setCyclic(true);
if (mCurrType == 2) {
numberPicker.TEXT_SIZE = (int) spToPx(65);
numberPicker.ITEM_TEXT_SIZE = (int) spToPx(42);
}
- numberPicker.setCurrentItem(numberDefault - numberMin);
+ numberPicker.setCurrentItem(numberDefault / numberPicker.getAdapter().getStep() - numberMin);
}
private float spToPx(float sp) {
*/
public class NumericWheelAdapter implements WheelAdapter {
- /** The default min value */
- public static final int DEFAULT_MAX_VALUE = 9;
+ /**
+ * The default min value
+ */
+ public static final int DEFAULT_MAX_VALUE = 9;
- /** The default max value */
- private static final int DEFAULT_MIN_VALUE = 0;
+ /**
+ * The default max value
+ */
+ private static final int DEFAULT_MIN_VALUE = 0;
- // Values
- private int minValue;
- private int maxValue;
+ // Values
+ private int minValue;
+ private int maxValue;
- // format
- private String format;
+ // format
+ private String format;
- /**
- * Default constructor
- */
- public NumericWheelAdapter() {
- this(DEFAULT_MIN_VALUE, DEFAULT_MAX_VALUE);
- }
+ /**
+ * Default constructor
+ */
+ public NumericWheelAdapter() {
+ this(DEFAULT_MIN_VALUE, DEFAULT_MAX_VALUE);
+ }
- /**
- * Constructor
- *
- * @param minValue
- * the wheel min value
- * @param maxValue
- * the wheel max value
- */
- public NumericWheelAdapter(int minValue, int maxValue) {
- this(minValue, maxValue, null);
- }
+ /**
+ * Constructor
+ *
+ * @param minValue the wheel min value
+ * @param maxValue the wheel max value
+ */
+ public NumericWheelAdapter(int minValue, int maxValue) {
+ this(minValue, maxValue, null);
+ }
- /**
- * Constructor
- *
- * @param minValue
- * the wheel min value
- * @param maxValue
- * the wheel max value
- * @param format
- * the format string
- */
- public NumericWheelAdapter(int minValue, int maxValue, String format) {
- this.minValue = minValue;
- this.maxValue = maxValue;
- this.format = format;
- }
+ /**
+ * Constructor
+ *
+ * @param minValue the wheel min value
+ * @param maxValue the wheel max value
+ * @param format the format string
+ */
+ public NumericWheelAdapter(int minValue, int maxValue, String format) {
+ this.minValue = minValue;
+ this.maxValue = maxValue;
+ this.format = format;
+ }
- @Override
- public String getItem(int index) {
- if (index >= 0 && index < getItemsCount()) {
- int value = minValue + index;
- return format != null ? String.format(format, value) : Integer
- .toString(value);
- }
- return null;
- }
+ @Override
+ public String getItem(int index) {
+ if (index >= 0 && index < getItemsCount()) {
+ int value = minValue + index;
+ return format != null ? String.format(format, value) : Integer
+ .toString(value);
+ }
+ return null;
+ }
- @Override
- public int getItemsCount() {
- return maxValue - minValue + 1;
- }
+ @Override
+ public int getStep() {
+ return 1;
+ }
- @Override
- public int getMaximumLength() {
- int max = Math.max(Math.abs(maxValue), Math.abs(minValue));
- int maxLen = Integer.toString(max).length();
- if (minValue < 0) {
- maxLen++;
- }
- return maxLen;
- }
+ @Override
+ public int getItemsCount() {
+ return maxValue - minValue + 1;
+ }
+
+ @Override
+ public int getMaximumLength() {
+ int max = Math.max(Math.abs(maxValue), Math.abs(minValue));
+ int maxLen = Integer.toString(max).length();
+ if (minValue < 0) {
+ maxLen++;
+ }
+ return maxLen;
+ }
}
--- /dev/null
+package com.ic.sport.widget.picker;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StepCountAdapter implements WheelAdapter {
+
+ public StepCountAdapter(int mMin, int mMax, int mStep) {
+ this.mMin = mMin;
+ this.mMax = mMax;
+ this.mStep = mStep;
+ updateData();
+ }
+
+ private final int DEFAULT_MIN = 0;
+ private final int DEFAULT_MAX = 100;
+ private final int DEFAULT_STEP = 1;
+
+ private int mMin = DEFAULT_MIN;
+ private int mMax = DEFAULT_MAX;
+ private int mStep = DEFAULT_STEP;
+
+ public void setupMin(int min) {
+ this.mMin = min;
+ updateData();
+ }
+
+ public void setupStep(int step) {
+ this.mStep = step;
+ updateData();
+ }
+
+
+ public void setupMax(int max) {
+ this.mMax = max;
+ updateData();
+ }
+
+ private final List<String> data = new ArrayList<>();
+
+ private void updateData() {
+ data.clear();
+ for (int i = mMin; i < mMax; i += mStep) {
+ data.add(String.valueOf(i));
+ }
+ }
+
+ @Override
+ public int getStep() {
+ return mStep;
+ }
+
+ @Override
+ public int getItemsCount() {
+ return data.size();
+ }
+
+ @Override
+ public String getItem(int index) {
+ return data.get(index);
+ }
+
+ @Override
+ public int getMaximumLength() {
+ return 0;
+ }
+}
package com.ic.sport.widget.picker;
public interface WheelAdapter {
+
+ int getStep();
+
/**
* Gets items count
*
boolean isCyclic = false;
// Listeners
- private List<OnWheelChangedListener> changingListeners = new LinkedList<>();
- private List<OnWheelScrollListener> scrollingListeners = new LinkedList<>();
+ private final List<OnWheelChangedListener> changingListeners = new LinkedList<>();
+ private final List<OnWheelScrollListener> scrollingListeners = new LinkedList<>();
/**
* Constructor