Pq 2 лет назад
Родитель
Сommit
f344410e13

+ 2 - 0
BaseLibrary/src/main/res/values/colors.xml

@@ -154,6 +154,8 @@
     <color name="color_4effc2">#4EFFC2</color>
     <color name="color_ff41d3">#FF41D3</color>
     <color name="color_00ffcf">#00FFCF</color>
+    <color name="color_f1f1f1">#F1F1F1</color>
+    <color name="color_979797">#979797</color>
 
     <color name="color_25292e">#25292E</color>
     <color name="color_F8F8F8">#F8F8F8</color>

+ 45 - 1
musictuner/src/main/java/com/cooleshow/musictuner/MusicTunerActivity.java

@@ -17,14 +17,17 @@ import android.view.LayoutInflater;
 import android.view.View;
 
 import com.cooleshow.base.ui.activity.BaseActivity;
+import com.cooleshow.base.utils.SizeUtils;
 import com.cooleshow.musictuner.bean.VoiceToneBean;
 import com.cooleshow.musictuner.databinding.ActivityMusicTunerLayoutBinding;
 import com.cooleshow.musictuner.utils.MusicTunerHelper;
 import com.cooleshow.musictuner.utils.VoiceDataUtils;
+import com.cooleshow.musictuner.widget.MusicTunerSettingDialog;
 
 public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBinding> implements View.OnClickListener {
 
     private MusicTunerHelper mMusicTunerHelper;
+    private MusicTunerSettingDialog mTunerSettingDialog;
 
     public static void start(Context context) {
         Intent intent = new Intent(context, MusicTunerActivity.class);
@@ -39,8 +42,14 @@ public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBin
 
     @Override
     protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "调音器");
         viewBinding.ivHzAdd.setOnClickListener(this);
         viewBinding.ivHzReduce.setOnClickListener(this);
+        viewBinding.toolbarInclude.tvRightText.setOnClickListener(this);
+        viewBinding.toolbarInclude.tvRightText.setText("设置");
+        viewBinding.toolbarInclude.tvRightText.setCompoundDrawablePadding(SizeUtils.dp2px(5));
+        viewBinding.toolbarInclude.tvRightText.setVisibility(View.VISIBLE);
+        viewBinding.toolbarInclude.tvRightText.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.drawable.icon_music_tuner_setting), null);
         VoiceDataUtils.getInstance().resetHzStandard();
         updateCurrentHzStandardText();
     }
@@ -109,12 +118,19 @@ public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBin
             //增加
             VoiceDataUtils.getInstance().addCurrentMusicHzStandard();
             updateCurrentHzStandardText();
-
+            return;
         }
         if (id == R.id.iv_hz_reduce) {
             //减小
             VoiceDataUtils.getInstance().reduceCurrentMusicHzStandard();
             updateCurrentHzStandardText();
+            return;
+        }
+
+        if (id == com.cooleshow.base.R.id.tv_right_text) {
+            //设置
+            showSettingDialog();
+            return;
         }
     }
 
@@ -123,4 +139,32 @@ public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBin
         viewBinding.ivMusicHzTip.setVisibility(currentMusicHzStandard == VoiceDataUtils.DEFAULT_MUSIC_HZ_STANDARD_440_HZ ? View.GONE : View.VISIBLE);
         viewBinding.tvMusicHzStandard.setText(getString(R.string.music_hz_str, currentMusicHzStandard));
     }
+
+    private void showSettingDialog() {
+        if (mTunerSettingDialog == null) {
+            mTunerSettingDialog = new MusicTunerSettingDialog(this);
+            mTunerSettingDialog.setOnEventListener(new MusicTunerSettingDialog.OnEventListener() {
+                @Override
+                public void onAddHz() {
+                    VoiceDataUtils.getInstance().addCurrentMusicHzStandard();
+                    updateCurrentHzStandardText();
+                }
+
+                @Override
+                public void onReduceHz() {
+                    VoiceDataUtils.getInstance().reduceCurrentMusicHzStandard();
+                    updateCurrentHzStandardText();
+                }
+
+                @Override
+                public void onReset() {
+                    VoiceDataUtils.getInstance().resetHzStandard();
+                    updateCurrentHzStandardText();
+                }
+            });
+        }
+        if (!mTunerSettingDialog.isShowing()) {
+            mTunerSettingDialog.show();
+        }
+    }
 }

+ 87 - 0
musictuner/src/main/java/com/cooleshow/musictuner/widget/MusicTunerSettingDialog.java

@@ -0,0 +1,87 @@
+package com.cooleshow.musictuner.widget;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+import com.cooleshow.musictuner.R;
+import com.cooleshow.musictuner.utils.VoiceDataUtils;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2022/10/25.
+ */
+public class MusicTunerSettingDialog extends Dialog implements View.OnClickListener {
+    private OnEventListener onEventListener;
+    private TextView mTvCurrentMusicHzStandard;
+
+    public MusicTunerSettingDialog(@NonNull Context context) {
+        super(context, com.cooleshow.base.R.style.DialogStyle);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.dialog_setting_layout);
+        mTvCurrentMusicHzStandard = findViewById(R.id.tv_current_music_hz_standard);
+        findViewById(R.id.view_add_hz).setOnClickListener(this);
+        findViewById(R.id.view_reduce_hz).setOnClickListener(this);
+        findViewById(R.id.tv_reset).setOnClickListener(this);
+        updateCurrentHzStandardText();
+    }
+
+    public void setOnEventListener(OnEventListener onEventListener) {
+        this.onEventListener = onEventListener;
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.view_add_hz) {
+            if (onEventListener != null) {
+                onEventListener.onAddHz();
+                updateCurrentHzStandardText();
+            }
+            return;
+        }
+        if (id == R.id.view_reduce_hz) {
+            if (onEventListener != null) {
+                onEventListener.onReduceHz();
+                updateCurrentHzStandardText();
+            }
+            return;
+        }
+
+        if(id == R.id.tv_reset){
+            if (onEventListener != null) {
+                onEventListener.onReset();
+                updateCurrentHzStandardText();
+            }
+            return;
+        }
+    }
+
+    public interface OnEventListener {
+        void onAddHz();
+
+        void onReduceHz();
+
+        void onReset();
+    }
+
+    private void updateCurrentHzStandardText() {
+        int currentMusicHzStandard = VoiceDataUtils.getInstance().getCurrentMusicHzStandard();
+        if (mTvCurrentMusicHzStandard != null) {
+            mTvCurrentMusicHzStandard.setText(getContext().getString(R.string.music_hz_str1, currentMusicHzStandard));
+        }
+    }
+
+    @Override
+    public void show() {
+        super.show();
+        updateCurrentHzStandardText();
+    }
+}

BIN
musictuner/src/main/res/drawable-xhdpi/icon_music_tuner_setting.png


BIN
musictuner/src/main/res/drawable-xxhdpi/icon_music_tuner_setting.png


+ 7 - 0
musictuner/src/main/res/drawable/shape_979797_border_6dp.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <stroke
+        android:width="1dp"
+        android:color="@color/color_979797" />
+    <corners android:radius="6dp" />
+</shape>

+ 5 - 0
musictuner/src/main/res/drawable/shape_f1f1f1_6dp.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/color_f1f1f1" />
+    <corners android:radius="6dp" />
+</shape>

+ 8 - 8
musictuner/src/main/res/layout/activity_music_tuner_layout.xml

@@ -25,24 +25,24 @@
         app:layout_constraintTop_toBottomOf="@+id/toolbar_include" />
 
     <ImageView
-        android:visibility="gone"
-        android:layout_marginStart="5dp"
-        app:layout_constraintLeft_toRightOf="@+id/tv_music_hz_standard"
-        app:layout_constraintBottom_toBottomOf="@+id/tv_music_hz_standard"
-        app:layout_constraintTop_toTopOf="@+id/tv_music_hz_standard"
         android:id="@+id/iv_music_hz_tip"
-        android:src="@drawable/icon_music_hz_tip"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
+        android:layout_height="wrap_content"
+        android:layout_marginStart="5dp"
+        android:src="@drawable/icon_music_hz_tip"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_music_hz_standard"
+        app:layout_constraintLeft_toRightOf="@+id/tv_music_hz_standard"
+        app:layout_constraintTop_toTopOf="@+id/tv_music_hz_standard" />
 
     <ImageView
-        android:adjustViewBounds="true"
         android:id="@+id/iv_dash_board_bg"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginStart="8dp"
         android:layout_marginTop="43dp"
         android:layout_marginEnd="8dp"
+        android:adjustViewBounds="true"
         android:background="@drawable/bg_dash_board"
         app:layout_constraintTop_toBottomOf="@+id/toolbar_include" />
 

+ 139 - 0
musictuner/src/main/res/layout/dialog_setting_layout.xml

@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/bg_white_14dp"
+    android:paddingStart="18dp"
+    android:paddingBottom="19dp"
+    android:paddingEnd="18dp">
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:includeFontPadding="false"
+        android:paddingTop="14dp"
+        android:text="设置"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_17"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <View
+        android:id="@+id/view_transposing_bg"
+        android:layout_width="0dp"
+        android:layout_height="45dp"
+        android:layout_marginTop="26dp"
+        android:background="@drawable/shape_f1f1f1_6dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_title" />
+
+    <TextView
+        android:text="没有移调"
+        android:id="@+id/tv_current_transposing"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:includeFontPadding="false"
+        android:paddingStart="15dp"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_16"
+        app:layout_constraintBottom_toBottomOf="@+id/view_transposing_bg"
+        app:layout_constraintLeft_toLeftOf="@+id/view_transposing_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_transposing_bg"
+        tools:text="长笛:C大调" />
+
+    <View
+        android:id="@+id/view_line"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginTop="26dp"
+        android:background="@color/color_eaeaea"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/view_transposing_bg" />
+
+    <TextView
+        android:id="@+id/tv_standard_tip"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:text="A4 Frquency"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintLeft_toLeftOf="@+id/view_line"
+        app:layout_constraintTop_toBottomOf="@+id/view_line" />
+
+    <TextView
+        android:id="@+id/view_add_hz"
+        android:layout_width="63dp"
+        android:layout_height="45dp"
+        android:layout_marginTop="13dp"
+        android:background="@drawable/shape_f1f1f1_6dp"
+        android:gravity="center"
+        android:text="+"
+        android:textColor="@color/color_2dc7aa"
+        android:textSize="@dimen/sp_25"
+        android:textStyle="bold"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_standard_tip" />
+
+
+    <TextView
+        android:id="@+id/view_reduce_hz"
+        android:layout_width="63dp"
+        android:layout_height="45dp"
+        android:background="@drawable/shape_f1f1f1_6dp"
+        android:gravity="center"
+        android:text="-"
+        android:textColor="@color/color_2dc7aa"
+        android:textSize="@dimen/sp_25"
+        android:textStyle="bold"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/view_add_hz" />
+
+    <TextView
+        android:id="@+id/tv_current_music_hz_standard"
+        android:layout_width="0dp"
+        android:layout_height="45dp"
+        android:layout_marginStart="9dp"
+        android:layout_marginEnd="9dp"
+        android:background="@drawable/shape_979797_border_6dp"
+        android:gravity="center"
+        android:text="440Hz"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintLeft_toRightOf="@+id/view_add_hz"
+        app:layout_constraintRight_toLeftOf="@+id/view_reduce_hz"
+        app:layout_constraintTop_toTopOf="@+id/view_add_hz" />
+
+    <TextView
+        android:id="@+id/tv_reset"
+        android:layout_width="0dp"
+        android:layout_height="31dp"
+        android:layout_marginTop="8dp"
+        android:background="@drawable/shape_f1f1f1_6dp"
+        android:gravity="center"
+        android:text="Reset:440Hz"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/view_add_hz" />
+
+    <TextView
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        android:layout_width="0dp"
+        android:layout_height="40dp"
+        android:layout_marginTop="14dp"
+        android:background="@drawable/shape_2dc7aa_6dp"
+        android:gravity="center"
+        android:text="确认"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_16"
+        app:layout_constraintTop_toBottomOf="@+id/tv_reset" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 1 - 0
musictuner/src/main/res/values/strings.xml

@@ -1,3 +1,4 @@
 <resources>
     <string name="music_hz_str">A4=%dHz</string>
+    <string name="music_hz_str1">%dHz</string>
 </resources>