From: TrillGates Date: Thu, 16 Sep 2021 03:00:21 +0000 (+0800) Subject: add step count for target. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=56290317ba75bbcbe2f6a5b90d4d4eb7ace305b8;p=ichardware.git add step count for target. --- diff --git a/app/src/main/java/com/ic/sport/fragment/pedometer/PedMainFragment.java b/app/src/main/java/com/ic/sport/fragment/pedometer/PedMainFragment.java index 50386f3..bc2aacf 100644 --- a/app/src/main/java/com/ic/sport/fragment/pedometer/PedMainFragment.java +++ b/app/src/main/java/com/ic/sport/fragment/pedometer/PedMainFragment.java @@ -119,18 +119,22 @@ public class PedMainFragment extends Fragment { } 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(); + } } } diff --git a/app/src/main/java/com/ic/sport/fragment/pedometer/PedSetupDialogFragment.java b/app/src/main/java/com/ic/sport/fragment/pedometer/PedSetupDialogFragment.java index 6514661..051aab9 100644 --- a/app/src/main/java/com/ic/sport/fragment/pedometer/PedSetupDialogFragment.java +++ b/app/src/main/java/com/ic/sport/fragment/pedometer/PedSetupDialogFragment.java @@ -19,6 +19,7 @@ import com.ic.iclooger.ICLogger; 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 { @@ -40,7 +41,7 @@ public class PedSetupDialogFragment extends DialogFragment { private WheelView numberPicker; - private final ArrayMap limil = new ArrayMap<>(); + private final ArrayMap limit = new ArrayMap<>(); private final String[] UNIT_RES = new String[3]; private final int[] VALUE_CURR = new int[3]; @@ -77,15 +78,14 @@ public class PedSetupDialogFragment extends DialogFragment { 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); @@ -93,15 +93,15 @@ public class PedSetupDialogFragment extends DialogFragment { 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); @@ -110,7 +110,11 @@ public class PedSetupDialogFragment extends DialogFragment { } 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) { @@ -120,7 +124,7 @@ public class PedSetupDialogFragment extends DialogFragment { 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) { diff --git a/app/src/main/java/com/ic/sport/widget/picker/NumericWheelAdapter.java b/app/src/main/java/com/ic/sport/widget/picker/NumericWheelAdapter.java index 783c75b..9cbbbcd 100644 --- a/app/src/main/java/com/ic/sport/widget/picker/NumericWheelAdapter.java +++ b/app/src/main/java/com/ic/sport/widget/picker/NumericWheelAdapter.java @@ -21,76 +21,80 @@ package com.ic.sport.widget.picker; */ 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; + } } diff --git a/app/src/main/java/com/ic/sport/widget/picker/StepCountAdapter.java b/app/src/main/java/com/ic/sport/widget/picker/StepCountAdapter.java new file mode 100644 index 0000000..eb04ff7 --- /dev/null +++ b/app/src/main/java/com/ic/sport/widget/picker/StepCountAdapter.java @@ -0,0 +1,67 @@ +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 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; + } +} diff --git a/app/src/main/java/com/ic/sport/widget/picker/WheelAdapter.java b/app/src/main/java/com/ic/sport/widget/picker/WheelAdapter.java index 36e9004..da8b813 100644 --- a/app/src/main/java/com/ic/sport/widget/picker/WheelAdapter.java +++ b/app/src/main/java/com/ic/sport/widget/picker/WheelAdapter.java @@ -17,6 +17,9 @@ package com.ic.sport.widget.picker; public interface WheelAdapter { + + int getStep(); + /** * Gets items count * diff --git a/app/src/main/java/com/ic/sport/widget/picker/WheelView.java b/app/src/main/java/com/ic/sport/widget/picker/WheelView.java index 651957a..0d2f73a 100644 --- a/app/src/main/java/com/ic/sport/widget/picker/WheelView.java +++ b/app/src/main/java/com/ic/sport/widget/picker/WheelView.java @@ -161,8 +161,8 @@ public class WheelView extends View { boolean isCyclic = false; // Listeners - private List changingListeners = new LinkedList<>(); - private List scrollingListeners = new LinkedList<>(); + private final List changingListeners = new LinkedList<>(); + private final List scrollingListeners = new LinkedList<>(); /** * Constructor