Quellcode durchsuchen

增加节拍器节拍UI逻辑

Pq vor 2 Jahren
Ursprung
Commit
97e82461ca

+ 44 - 1
metronome/src/main/java/com/cooleshow/metronome/MetronomeActivity.java

@@ -78,6 +78,10 @@ public class MetronomeActivity extends BaseActivity<ActivityMetronomeLayoutBindi
     @Override
     protected void initView() {
         viewBinding.toolbarInclude.toolbar.setBackgroundColor(Color.TRANSPARENT);
+        updateSpeedText();
+    }
+
+    private void updateSpeedText() {
         viewBinding.tvSpeed.setText(String.valueOf(currentBeatRate));
     }
 
@@ -182,6 +186,8 @@ public class MetronomeActivity extends BaseActivity<ActivityMetronomeLayoutBindi
 
     private void initListener() {
         viewBinding.ivBeatValue.setOnClickListener(this);
+        viewBinding.ivAdd.setOnClickListener(this);
+        viewBinding.ivReduce.setOnClickListener(this);
         viewBinding.tvPlay.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -225,7 +231,7 @@ public class MetronomeActivity extends BaseActivity<ActivityMetronomeLayoutBindi
                     currentBeatRate = MetronomeConfig.MAX_PLAY_RATE;
                 }
                 lastProgress = newProgress;
-                viewBinding.tvSpeed.setText(String.valueOf(currentBeatRate));
+                updateSpeedText();
             }
         });
     }
@@ -306,5 +312,42 @@ public class MetronomeActivity extends BaseActivity<ActivityMetronomeLayoutBindi
             selectSymbols();
             return;
         }
+
+        if (id == R.id.iv_reduce) {
+            //减速
+            if (currentBeatRate != MetronomeConfig.MIN_PLAY_RATE) {
+                currentBeatRate -= 1;
+                updateSpeedText();
+            }
+            return;
+        }
+
+        if (id == R.id.iv_add) {
+            //加速
+            if (currentBeatRate != MetronomeConfig.MAX_PLAY_RATE) {
+                currentBeatRate += 1;
+                updateSpeedText();
+            }
+            return;
+        }
+    }
+
+    private void updateAnim(int value) {
+        int progress = viewBinding.cirSeekbar.getProgress();
+        if (value > 0) {
+            progress += (value * MetronomeConfig.PLAY_RATE_UNIT);
+            Log.i("pq", "progress:" + progress);
+            progress = progress % MetronomeConfig.MAX_RATE_PROGRESS;
+            Log.i("pq", "progress:" + progress);
+            viewBinding.cirSeekbar.setProgress(progress);
+        } else {
+            progress += (value * MetronomeConfig.PLAY_RATE_UNIT);
+            if (progress < 0) {
+                viewBinding.cirSeekbar.setProgress(MetronomeConfig.MAX_RATE_PROGRESS + progress);
+            } else {
+                Log.i("pq", "progress:" + progress);
+                viewBinding.cirSeekbar.setProgress(progress);
+            }
+        }
     }
 }

+ 3 - 3
metronome/src/main/java/com/cooleshow/metronome/adapter/MetronomeAdapter.java

@@ -53,11 +53,11 @@ public class MetronomeAdapter extends BaseQuickAdapter<BeatBean, BaseViewHolder>
 
 
     public void notifyData(int selectPosition) {
-        Log.i("pq", "position:" + selectPosition);
+//        Log.i("pq", "position:" + selectPosition);
         int defItemCount = getDefItemCount();
-        Log.i("pq", "defItemCount:" + defItemCount);
+//        Log.i("pq", "defItemCount:" + defItemCount);
         this.selectPosition = selectPosition != -1 ? selectPosition % defItemCount : -1;
-        Log.i("pq", "selectPosition:" + this.selectPosition);
+//        Log.i("pq", "selectPosition:" + this.selectPosition);
         notifyDataSetChanged();
     }
 }

+ 1 - 0
metronome/src/main/java/com/cooleshow/metronome/constants/MetronomeConfig.java

@@ -8,6 +8,7 @@ public class MetronomeConfig {
     public static final int MIN_PLAY_RATE = 50;//最小播放速度
     public static final int MAX_PLAY_RATE = 200;//最大播放速度
     public static final int PLAY_RATE_UNIT = 10;//10个进度 +1或者-1速度
+    public static final int MAX_RATE_PROGRESS = 100;//最大进度100
     public static String RHYTHNS[] = {"1/2", "2/2", "1/4", "2/4", "3/4", "4/4", "3/8", "6/8"};
 
 }