Ver Fonte

增加小工具页面

Pq há 2 anos atrás
pai
commit
e912b28903

+ 7 - 1
BaseLibrary/src/main/AndroidManifest.xml

@@ -34,7 +34,13 @@
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
 
-        <activity android:name=".ui.activity.userInfo.StudentUserInfoDetailActivity"
+        <activity
+            android:name=".ui.activity.userInfo.StudentUserInfoDetailActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.activity.tools.SmallToolsActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
     </application>

+ 13 - 0
BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt

@@ -179,6 +179,19 @@ object RouterPath {
             const val MINE_EDIT_ADDRESS = "/base/ui/EditAddressActivity"
             const val SCAN_QR_CODE = "/base/ui/scan/ScanActivity"
             const val USER_DETAIL_STU = "/base/ui/userInfo/StudentUserInfoDetailActivity"
+            const val SMALL_TOOLS = "/base/ui/tools/SmallToolsActivity"
+        }
+    }
+
+    class Other {
+        companion object {
+            const val METRONOME_PAGE = "/music/cooleshow/MetronomeActivity"
+        }
+    }
+
+    class MusicTuner {
+        companion object {
+            const val MUSIC_TUNER_PAGE = "/musictuner/musictuner/MusicTunerActivity"
         }
     }
 

+ 80 - 0
BaseLibrary/src/main/java/com/cooleshow/base/ui/activity/tools/SmallToolsActivity.java

@@ -0,0 +1,80 @@
+package com.cooleshow.base.ui.activity.tools;
+
+import android.Manifest;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.R;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.ScanContract;
+import com.cooleshow.base.databinding.ActivityScanLayoutBinding;
+import com.cooleshow.base.databinding.ActivitySmallToolsLayoutBinding;
+import com.cooleshow.base.presenter.ScanPresenter;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseActivity;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.LogUtils;
+import com.cooleshow.base.utils.PermissionUtils;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.helper.GlideEngine;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
+import com.cooleshow.base.widgets.DialogUtil;
+import com.luck.picture.lib.PictureSelector;
+import com.luck.picture.lib.config.PictureConfig;
+import com.luck.picture.lib.config.PictureMimeType;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.tbruyelle.rxpermissions3.RxPermissions;
+import com.uuzuche.lib_zxing.activity.CaptureFragment;
+import com.uuzuche.lib_zxing.activity.CodeUtils;
+
+import java.util.List;
+
+import androidx.annotation.Nullable;
+
+/**
+ * Author by pq, Date on 2022/7/11.
+ */
+@Route(path = RouterPath.BaseCenter.SMALL_TOOLS)
+public class SmallToolsActivity extends BaseActivity<ActivitySmallToolsLayoutBinding> implements View.OnClickListener {
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        QMUIStatusBarHelper.setStatusBarLightMode(this);
+    }
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "小工具");
+        viewBinding.viewMetronomeBg.setOnClickListener(this);
+        viewBinding.viewMusicTunerBg.setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.view_metronome_bg) {
+            //节拍器
+            ARouter.getInstance().build(RouterPath.Other.METRONOME_PAGE)
+                    .navigation();
+            return;
+        }
+        if (id == R.id.view_music_tuner_bg) {
+            //调音器
+            ARouter.getInstance().build(RouterPath.MusicTuner.MUSIC_TUNER_PAGE)
+                    .navigation();
+            return;
+        }
+    }
+
+    @Override
+    protected ActivitySmallToolsLayoutBinding getLayoutView() {
+        return ActivitySmallToolsLayoutBinding.inflate(getLayoutInflater());
+    }
+
+}

BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_metronome_enter_bg.png


BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_music_tuner_enter_bg.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_metronome_enter_bg.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_music_tuner_enter_bg.png


+ 9 - 0
BaseLibrary/src/main/res/drawable/shape_small_tool_metronome_bg.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient
+        android:angle="270"
+        android:endColor="#7FEED9"
+        android:startColor="#ACFBEC" />
+
+    <corners android:radius="14dp"/>
+</shape>

+ 9 - 0
BaseLibrary/src/main/res/drawable/shape_small_tool_music_tuner_bg.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient
+        android:angle="270"
+        android:endColor="#CAB2FF"
+        android:startColor="#E2D5FF" />
+
+    <corners android:radius="14dp" />
+</shape>

+ 104 - 0
BaseLibrary/src/main/res/layout/activity_small_tools_layout.xml

@@ -0,0 +1,104 @@
+<?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"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <include
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <View
+        android:id="@+id/view_metronome_bg"
+        android:layout_width="match_parent"
+        android:layout_height="114dp"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="18dp"
+        android:layout_marginEnd="16dp"
+        android:background="@drawable/shape_small_tool_metronome_bg"
+        app:layout_constraintTop_toBottomOf="@+id/toolbar_include" />
+
+
+    <TextView
+        android:id="@+id/tv_metronome_title"
+        android:includeFontPadding="false"
+        android:layout_marginStart="24dp"
+        android:layout_marginTop="24dp"
+        android:textStyle="bold"
+        app:layout_constraintLeft_toLeftOf="@+id/view_metronome_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_metronome_bg"
+        android:textSize="@dimen/sp_20"
+        android:textColor="@color/color_006d58"
+        android:text="节拍器"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+
+    <ImageView
+        app:layout_constraintBottom_toBottomOf="@+id/view_metronome_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_metronome_bg"
+        app:layout_constraintRight_toRightOf="@+id/view_metronome_bg"
+        android:adjustViewBounds="true"
+        android:src="@drawable/icon_metronome_enter_bg"
+        android:layout_width="wrap_content"
+        android:layout_height="114dp"/>
+
+    <TextView
+        android:textSize="@dimen/sp_14"
+        android:textColor="@color/color_006d58"
+        android:layout_marginTop="6dp"
+        app:layout_constraintTop_toBottomOf="@+id/tv_metronome_title"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_metronome_title"
+        android:text="节拍器,练习好节奏"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+
+    <View
+        android:id="@+id/view_music_tuner_bg"
+        android:layout_width="match_parent"
+        android:layout_height="114dp"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="16dp"
+        android:layout_marginEnd="16dp"
+        android:background="@drawable/shape_small_tool_music_tuner_bg"
+        app:layout_constraintTop_toBottomOf="@+id/view_metronome_bg" />
+
+
+    <TextView
+        android:id="@+id/tv_music_tuner_title"
+        android:includeFontPadding="false"
+        android:layout_marginStart="24dp"
+        android:layout_marginTop="24dp"
+        android:textStyle="bold"
+        app:layout_constraintLeft_toLeftOf="@+id/view_music_tuner_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_music_tuner_bg"
+        android:textSize="@dimen/sp_20"
+        android:textColor="@color/color_6c00c3"
+        android:text="节拍器"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <TextView
+        android:textSize="@dimen/sp_14"
+        android:textColor="@color/color_6c00c3"
+        android:layout_marginTop="6dp"
+        app:layout_constraintTop_toBottomOf="@+id/tv_music_tuner_title"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_music_tuner_title"
+        android:text="精准调音,一劳永逸"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+
+    <ImageView
+        app:layout_constraintBottom_toBottomOf="@+id/view_music_tuner_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_music_tuner_bg"
+        app:layout_constraintRight_toRightOf="@+id/view_music_tuner_bg"
+        android:adjustViewBounds="true"
+        android:src="@drawable/icon_music_tuner_enter_bg"
+        android:layout_width="wrap_content"
+        android:layout_height="114dp"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

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

@@ -157,6 +157,8 @@
     <color name="color_f1f1f1">#F1F1F1</color>
     <color name="color_979797">#979797</color>
     <color name="color_2d3648">#2D3648</color>
+    <color name="color_006d58">#006D58</color>
+    <color name="color_6c00c3">#6C00C3</color>
 
     <color name="color_25292e">#25292E</color>
     <color name="color_F8F8F8">#F8F8F8</color>

+ 16 - 1
metronome/build.gradle

@@ -1,5 +1,18 @@
-apply plugin: 'com.android.library'
+plugins {
+    id 'com.android.library'
+    id 'org.jetbrains.kotlin.android'
+//    id 'kotlin-parcelize'
+    id 'kotlin-android'
+//    id 'kotlin-android-extensions'
+}
+apply plugin: 'kotlin-kapt'
+apply plugin: 'kotlin-android-extensions'
 
+kapt {
+    arguments {
+        arg("AROUTER_MODULE_NAME", project.getName())
+    }
+}
 android {
     compileSdkVersion 32
 
@@ -51,4 +64,6 @@ dependencies {
     implementation project(':live_teaching')
     //ARouter
     annotationProcessor("com.alibaba:arouter-compiler:$rootProject.ext.android.arouter_api_version")
+    implementation 'com.alibaba:arouter-api:1.5.2'
+    kapt 'com.alibaba:arouter-compiler:1.5.2'
 }

+ 3 - 0
metronome/src/main/java/com/cooleshow/metronome/MetronomeActivity.java

@@ -13,8 +13,10 @@ import android.view.View;
 import android.widget.SeekBar;
 import android.widget.TextView;
 
+import com.alibaba.android.arouter.facade.annotation.Route;
 import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
 import com.bigkoo.pickerview.view.OptionsPickerView;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.metronome.Utils.VolumeManager;
@@ -29,6 +31,7 @@ import java.util.List;
 
 import androidx.recyclerview.widget.LinearLayoutManager;
 
+@Route(path = RouterPath.Other.METRONOME_PAGE)
 public class MetronomeActivity extends BaseActivity<ActivityMetronomeLayoutBinding> implements View.OnClickListener, VolumeManager.VolumeChangeListener {
     public MetronomeType currentBeatType;
     public int currentBeatRate = MetronomeConfig.DEFAULT_PLAY_RATE;

+ 16 - 1
musictuner/build.gradle

@@ -1,5 +1,18 @@
-apply plugin: 'com.android.library'
+plugins {
+    id 'com.android.library'
+    id 'org.jetbrains.kotlin.android'
+//    id 'kotlin-parcelize'
+    id 'kotlin-android'
+//    id 'kotlin-android-extensions'
+}
+apply plugin: 'kotlin-kapt'
+apply plugin: 'kotlin-android-extensions'
 
+kapt {
+    arguments {
+        arg("AROUTER_MODULE_NAME", project.getName())
+    }
+}
 android {
     compileSdkVersion 32
 
@@ -50,4 +63,6 @@ dependencies {
     implementation project(':BaseLibrary')
     androidTestImplementation 'androidx.test.ext:junit:1.1.3'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+    implementation 'com.alibaba:arouter-api:1.5.2'
+    kapt 'com.alibaba:arouter-compiler:1.5.2'
 }

+ 3 - 0
musictuner/src/main/java/com/cooleshow/musictuner/MusicTunerActivity.java

@@ -18,6 +18,8 @@ import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.utils.SizeUtils;
 import com.cooleshow.musictuner.bean.VoiceToneBean;
@@ -30,6 +32,7 @@ import com.cooleshow.musictuner.widget.MusicTunerSettingDialog;
 import com.cooleshow.musictuner.widget.MusicTuningForkDialog;
 import com.tbruyelle.rxpermissions3.RxPermissions;
 
+@Route(path = RouterPath.MusicTuner.MUSIC_TUNER_PAGE)
 public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBinding> implements View.OnClickListener {
 
     private MusicTunerHelper mMusicTunerHelper;

+ 1 - 1
student/src/main/java/com/cooleshow/student/ui/main/HomeMenuFragment.java

@@ -70,7 +70,7 @@ public class HomeMenuFragment extends BaseMVPFragment<FragmentHomeMenuBinding, H
                 AppHomeBean.ItemBean item = (AppHomeBean.ItemBean) adapter.getItem(position);
                 if (!TextUtils.isEmpty(item.linkUrl)) {
                     if (item.linkUrl.contains("native-metronome")) {
-                        MetronomeActivity.start(getContext());
+                        ARouter.getInstance().build(RouterPath.BaseCenter.SMALL_TOOLS).navigation();
                         return;
                     }
                     ARouter.getInstance()

+ 1 - 2
student/src/main/java/com/cooleshow/student/ui/main/NewHomeFragment.java

@@ -787,8 +787,7 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
 
         if (id == R.id.view_search_bg) {
             //搜索
-            MusicTunerActivity.start(getContext());
-//            WebStartHelper.startSearch();
+            WebStartHelper.startSearch();
             return;
         }
         if (id == R.id.iv_scan) {

+ 1 - 0
teacher/build.gradle

@@ -123,6 +123,7 @@ dependencies {
     implementation project(path: ':rong_im:live')
     implementation project(path: ':rong_im:common_im_ui')
     implementation project(path: ':live_teaching')
+    implementation project(path: ':metronome')
     implementation project(path: ':musictuner')
     implementation "com.alibaba:arouter-api:$rootProject.ext.android.arouter_api_version"
     kapt "com.alibaba:arouter-compiler:$rootProject.ext.android.arouter_api_version"

+ 4 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeMenuFragment.java

@@ -64,6 +64,10 @@ public class HomeMenuFragment extends BaseFragment<FragmentHomeMenuBinding> {
                 if (position < addPhotoListAdapter.getData().size()) {
                     HomeMenuBean.ItemBean item = (HomeMenuBean.ItemBean) adapter.getItem(position);
                     if (!TextUtils.isEmpty(item.linkUrl)) {
+                        if (item.linkUrl.contains("native-metronome")) {
+                            ARouter.getInstance().build(RouterPath.BaseCenter.SMALL_TOOLS).navigation();
+                            return;
+                        }
                         ARouter.getInstance()
                                 .build(RouterPath.WebCenter.ACTIVITY_HTML)
                                 .withString(WebConstants.WEB_URL, item.linkUrl)