Bladeren bron

1.添加mmse module

王鹏鹏 2 jaren geleden
bovenliggende
commit
7cb5f7ed04

+ 6 - 0
.idea/misc.xml

@@ -83,7 +83,13 @@
         <entry key="..\:/workspace/hcp-pad/login/src/main/res/drawable/bg_login_edit.xml" value="0.219" />
         <entry key="..\:/workspace/hcp-pad/login/src/main/res/layout/activity_login.xml" value="0.22826086956521738" />
         <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/activity_main.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/activity_number.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/activity_questions.xml" value="0.4" />
         <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/activity_signature.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/fragment_number.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/fragment_selected_item.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/fragment_single_judgment.xml" value="0.22239583333333332" />
+        <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/fragment_sound_record.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/personalcenter/src/main/res/drawable/bg_center.xml" value="0.219" />
         <entry key="..\:/workspace/hcp-pad/personalcenter/src/main/res/drawable/bg_common_head_layout.xml" value="0.219" />
         <entry key="..\:/workspace/hcp-pad/personalcenter/src/main/res/drawable/bg_personal_center.xml" value="0.219" />

+ 5 - 0
baselib/src/main/java/com/yingyangfly/baselib/router/RouterUrlCommon.kt

@@ -115,4 +115,9 @@ object RouterUrlCommon {
      */
     const val signature = "/signature/signature"
 
+    /**
+     * MMSE测评
+     */
+    const val mmseEvaluation = "/mmse/evaluation"
+
 }

+ 1 - 1
home/src/main/java/com/yingyangfly/home/activity/HomeActivity.kt

@@ -106,7 +106,7 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
             }
             //专业测评
             tvProfessionalEvaluation.setOnSingleClickListener {
-                "该功能正在开发中,敬请期待".toast()
+                JumpUtil.jumpActivity(RouterUrlCommon.mmseEvaluation, mContext)
             }
             //健康咨询
             tvHealthCounseling.setOnSingleClickListener {

+ 5 - 2
mmse/src/main/AndroidManifest.xml

@@ -3,13 +3,16 @@
     package="com.yingyang.mmse">
 
     <application>
-
+        <activity
+            android:name="com.yingyangfly.mmse.activity.QuestionsActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:screenOrientation="landscape"
+            android:windowSoftInputMode="adjustResize|adjustPan" />
         <activity
             android:name="com.yingyangfly.mmse.activity.SignatureActivity"
             android:configChanges="keyboardHidden|orientation|screenSize"
             android:screenOrientation="landscape"
             android:windowSoftInputMode="adjustResize|adjustPan" />
-
     </application>
 
 </manifest>

+ 49 - 0
mmse/src/main/java/com/yingyangfly/mmse/activity/QuestionsActivity.kt

@@ -0,0 +1,49 @@
+package com.yingyangfly.mmse.activity
+
+import androidx.fragment.app.Fragment
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.yingyang.mmse.R
+import com.yingyang.mmse.databinding.ActivityQuestionsBinding
+import com.yingyangfly.baselib.base.BaseActivity
+import com.yingyangfly.baselib.router.RouterUrlCommon
+import com.yingyangfly.mmse.activity.adapter.FragmentTabAdapter
+import com.yingyangfly.mmse.activity.fragment.NumberFragment
+import com.yingyangfly.mmse.activity.fragment.SelectedItemFragment
+import com.yingyangfly.mmse.activity.fragment.SingleJudgmentFragment
+import com.yingyangfly.mmse.activity.fragment.SoundRecordFragment
+
+/**
+ * MMSE测评
+ */
+@Route(path = RouterUrlCommon.mmseEvaluation)
+class QuestionsActivity : BaseActivity<ActivityQuestionsBinding>() {
+
+    private var tabFragments = mutableListOf<Fragment>()
+
+    override fun initViews() {
+        tabFragments.clear()
+        tabFragments.add(NumberFragment())
+        tabFragments.add(SelectedItemFragment())
+        tabFragments.add(NumberFragment())
+        tabFragments.add(NumberFragment())
+        tabFragments.add(SelectedItemFragment())
+        tabFragments.add(SingleJudgmentFragment())
+        tabFragments.add(SingleJudgmentFragment())
+        tabFragments.add(SingleJudgmentFragment())
+        tabFragments.add(SingleJudgmentFragment())
+        tabFragments.add(SingleJudgmentFragment())
+        tabFragments.add(SoundRecordFragment())
+        tabFragments.add(SingleJudgmentFragment())
+        val tabAdapter = FragmentTabAdapter(this, tabFragments, R.id.layoutOperate)
+
+    }
+
+    override fun initListener() {
+
+    }
+
+    override fun initData() {
+
+    }
+
+}

+ 119 - 0
mmse/src/main/java/com/yingyangfly/mmse/activity/adapter/FragmentTabAdapter.java

@@ -0,0 +1,119 @@
+package com.yingyangfly.mmse.activity.adapter;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentTransaction;
+
+import java.util.List;
+
+/**
+ * Created with IntelliJ IDEA.
+ *
+ * @author 王鹏鹏
+ */
+public class FragmentTabAdapter {
+
+    /**
+     * 一个tab页面对应一个Fragment
+     */
+    private List<Fragment> fragments;
+
+    /**
+     * Fragment所属的Activity
+     */
+    private FragmentActivity fragmentActivity;
+
+    /**
+     * Activity中所要被替换的区域的id
+     */
+    private int fragmentContentId;
+
+    /**
+     * 当前Tab页面索引
+     */
+    private int currentTab;
+
+    /**
+     * 用于让调用者在切换tab时候增加新的功能
+     */
+    private OnRgsExtraCheckedChangedListener onRgsExtraCheckedChangedListener;
+
+    public FragmentTabAdapter(FragmentActivity fragmentActivity, List<Fragment> fragments, int fragmentContentId) {
+        this.fragments = fragments;
+        this.fragmentActivity = fragmentActivity;
+        this.fragmentContentId = fragmentContentId;
+        // 默认显示第一页
+        FragmentTransaction ft = fragmentActivity.getSupportFragmentManager().beginTransaction();
+        ft.add(fragmentContentId, fragments.get(0));
+        ft.commit();
+    }
+
+    public void onCheckedChanged(int checkedId) {
+        for (int i = 0; i < fragments.size(); i++) {
+            if (i == checkedId) {
+                Fragment fragment = fragments.get(i);
+                FragmentTransaction ft = obtainFragmentTransaction(i);
+                getCurrentFragment().onPause(); // 暂停当前tab
+                if (fragment.isAdded()) {
+                    fragment.onResume(); // 启动目标tab的onResume()
+                } else {
+                    ft.add(fragmentContentId, fragment);
+                }
+                // 显示目标tab
+                showTab(i);
+                ft.commit();
+            }
+        }
+
+    }
+
+    /**
+     * 切换tab
+     */
+    private void showTab(int idx) {
+        for (int i = 0; i < fragments.size(); i++) {
+            Fragment fragment = fragments.get(i);
+            FragmentTransaction ft = obtainFragmentTransaction(idx);
+            if (idx == i) {
+                ft.show(fragment);
+            } else {
+                ft.hide(fragment);
+            }
+            ft.commit();
+        }
+        // 更新目标tab为当前tab
+        currentTab = idx;
+    }
+
+    /**
+     * 获取一个带动画的FragmentTransaction
+     */
+    private FragmentTransaction obtainFragmentTransaction(int index) {
+        FragmentTransaction ft = fragmentActivity.getSupportFragmentManager().beginTransaction();
+        return ft;
+    }
+
+    public int getCurrentTab() {
+        return currentTab;
+    }
+
+    public Fragment getCurrentFragment() {
+        return fragments.get(currentTab);
+    }
+
+    public OnRgsExtraCheckedChangedListener getOnRgsExtraCheckedChangedListener() {
+        return onRgsExtraCheckedChangedListener;
+    }
+
+    public void setOnRgsExtraCheckedChangedListener(OnRgsExtraCheckedChangedListener onRgsExtraCheckedChangedListener) {
+        this.onRgsExtraCheckedChangedListener = onRgsExtraCheckedChangedListener;
+    }
+
+    /**
+     * 切换tab额外功能功能接口
+     */
+    public interface OnRgsExtraCheckedChangedListener {
+        void OnRgsExtraCheckedChanged(int checkedId, int index);
+    }
+
+}

+ 23 - 0
mmse/src/main/java/com/yingyangfly/mmse/activity/fragment/NumberFragment.kt

@@ -0,0 +1,23 @@
+package com.yingyangfly.mmse.activity.fragment
+
+import com.yingyang.mmse.databinding.FragmentNumberBinding
+import com.yingyangfly.baselib.base.BaseFragment
+
+/**
+ * 数字输入类
+ */
+class NumberFragment : BaseFragment<FragmentNumberBinding>() {
+
+    override fun initViews() {
+
+    }
+
+    override fun initListener() {
+
+    }
+
+    override fun initData() {
+
+    }
+
+}

+ 22 - 0
mmse/src/main/java/com/yingyangfly/mmse/activity/fragment/SelectedItemFragment.kt

@@ -0,0 +1,22 @@
+package com.yingyangfly.mmse.activity.fragment
+
+import com.yingyang.mmse.databinding.FragmentSelectedItemBinding
+import com.yingyangfly.baselib.base.BaseFragment
+
+/**
+ * 单选类
+ */
+class SelectedItemFragment : BaseFragment<FragmentSelectedItemBinding>() {
+
+    override fun initViews() {
+
+    }
+
+    override fun initListener() {
+
+    }
+
+    override fun initData() {
+
+    }
+}

+ 22 - 0
mmse/src/main/java/com/yingyangfly/mmse/activity/fragment/SingleJudgmentFragment.kt

@@ -0,0 +1,22 @@
+package com.yingyangfly.mmse.activity.fragment
+
+import com.yingyang.mmse.databinding.FragmentSingleJudgmentBinding
+import com.yingyangfly.baselib.base.BaseFragment
+
+/**
+ * 录入单个判断
+ */
+class SingleJudgmentFragment : BaseFragment<FragmentSingleJudgmentBinding>() {
+
+    override fun initViews() {
+
+    }
+
+    override fun initListener() {
+
+    }
+
+    override fun initData() {
+
+    }
+}

+ 22 - 0
mmse/src/main/java/com/yingyangfly/mmse/activity/fragment/SoundRecordFragment.kt

@@ -0,0 +1,22 @@
+package com.yingyangfly.mmse.activity.fragment
+
+import com.yingyang.mmse.databinding.FragmentSoundRecordBinding
+import com.yingyangfly.baselib.base.BaseFragment
+
+/**
+ * 听录音判断
+ */
+class SoundRecordFragment : BaseFragment<FragmentSoundRecordBinding>() {
+
+    override fun initViews() {
+
+    }
+
+    override fun initListener() {
+
+    }
+
+    override fun initData() {
+
+    }
+}

+ 5 - 0
mmse/src/main/manifest/AndroidManifest.xml

@@ -3,6 +3,11 @@
     package="com.yingyang.mmse">
 
     <application>
+        <activity
+            android:name="com.yingyangfly.mmse.activity.QuestionsActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:screenOrientation="landscape"
+            android:windowSoftInputMode="adjustResize|adjustPan" />
         <activity
             android:name="com.yingyangfly.mmse.activity.SignatureActivity"
             android:configChanges="keyboardHidden|orientation|screenSize"

+ 49 - 0
mmse/src/main/res/layout/activity_questions.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout 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"
+    tools:ignore="ResourceName">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        style="@style/layout_properties_specify_width_geight"
+        android:background="@mipmap/icon_uniform_background">
+
+        <LinearLayout
+            android:id="@+id/layoutHead"
+            style="@style/back_home_layout"
+            tools:ignore="MissingConstraints">
+
+            <androidx.appcompat.widget.AppCompatImageView style="@style/back_home_image" />
+
+            <androidx.appcompat.widget.AppCompatTextView style="@style/back_home_text" />
+        </LinearLayout>
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvTitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/divider_32px"
+            android:text="@string/mmse_evaluation"
+            android:textColor="@android:color/white"
+            android:textSize="@dimen/divider_34px"
+            android:textStyle="bold"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <androidx.cardview.widget.CardView
+            android:id="@+id/layoutOperate"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_margin="@dimen/divider_18px"
+            app:cardBackgroundColor="@android:color/white"
+            app:cardCornerRadius="@dimen/divider_38px"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tvTitle">
+
+        </androidx.cardview.widget.CardView>
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</layout>

+ 24 - 0
mmse/src/main/res/layout/fragment_number.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout 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"
+    tools:ignore="ResourceName">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvTitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="number"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</layout>

+ 20 - 0
mmse/src/main/res/layout/fragment_selected_item.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvTitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="selectedItem"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>

+ 21 - 0
mmse/src/main/res/layout/fragment_single_judgment.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvTitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="singleJudgment"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</layout>

+ 23 - 0
mmse/src/main/res/layout/fragment_sound_record.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout 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"
+    tools:ignore="ResourceName">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvTitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="number"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</layout>

BIN
mmse/src/main/res/mipmap-xxhdpi/bg_home.png


BIN
mmse/src/main/res/mipmap-xxhdpi/icon_uniform_background.png


+ 3 - 2
mmse/src/main/res/values/strings.xml

@@ -1,3 +1,4 @@
-<resources>
-
+<resources xmlns:tools="http://schemas.android.com/tools">
+    <string name="home_pager" tools:ignore="ExtraTranslation,ResourceName">首页</string>
+    <string name="mmse_evaluation">MMSE测评</string>
 </resources>

+ 70 - 0
mmse/src/main/res/values/styles.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
+
+    <!--自适应高度-->
+    <style name="layout_properties_self_adaption" tools:ignore="ResourceName">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
+
+    <!--自适应高度 居中-->
+    <style name="layout_properties_self_adaption_center" parent="layout_properties_self_adaption" tools:ignore="ResourceName">
+        <item name="layout_constraintStart_toStartOf">parent</item>
+        <item name="layout_constraintEnd_toEndOf">parent</item>
+        <item name="layout_constraintTop_toTopOf">parent</item>
+        <item name="layout_constraintBottom_toBottomOf">parent</item>
+    </style>
+
+    <!--指定宽度和高度-->
+    <style name="layout_properties_specify_width_geight" tools:ignore="ResourceName">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">match_parent</item>
+    </style>
+
+    <!--指定宽度和高度-->
+    <style name="layout_properties_specify_width_geight_center" parent="layout_properties_specify_width_geight" tools:ignore="ResourceName">
+        <item name="layout_constraintStart_toStartOf">parent</item>
+        <item name="layout_constraintEnd_toEndOf">parent</item>
+        <item name="layout_constraintTop_toTopOf">parent</item>
+        <item name="layout_constraintBottom_toBottomOf">parent</item>
+    </style>
+
+    <!--指定宽度-->
+    <style name="layout_properties_specify_width" tools:ignore="ResourceName">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
+
+    <!--指定宽度-->
+    <style name="layout_properties_specify_width_center" parent="layout_properties_specify_width" tools:ignore="ResourceName">
+        <item name="layout_constraintStart_toStartOf">parent</item>
+        <item name="layout_constraintEnd_toEndOf">parent</item>
+        <item name="layout_constraintTop_toTopOf">parent</item>
+        <item name="layout_constraintBottom_toBottomOf">parent</item>
+    </style>
+
+    <style name="back_home_layout" tools:ignore="ResourceName">
+        <item name="android:layout_width">@dimen/divider_195px</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:orientation">horizontal</item>
+        <item name="layout_constraintStart_toStartOf">parent</item>
+        <item name="layout_constraintTop_toTopOf">parent</item>
+    </style>
+
+    <style name="back_home_image" tools:ignore="ResourceName">
+        <item name="android:layout_width">@dimen/divider_48px</item>
+        <item name="android:layout_height">@dimen/divider_43px</item>
+        <item name="android:layout_marginStart">@dimen/divider_65px</item>
+        <item name="android:layout_marginTop">@dimen/divider_35px</item>
+        <item name="android:background">@mipmap/bg_home</item>
+    </style>
+
+    <style name="back_home_text" parent="layout_properties_self_adaption" tools:ignore="ResourceName">
+        <item name="android:layout_marginStart">@dimen/divider_14px</item>
+        <item name="android:layout_marginTop">@dimen/divider_38px</item>
+        <item name="android:textSize">@dimen/divider_28px</item>
+        <item name="android:textStyle">bold</item>
+        <item name="android:textColor">@android:color/white</item>
+        <item name="android:text">@string/home_pager</item>
+    </style>
+</resources>