Forráskód Böngészése

ncse量表语言能力开发完成

hurixing 1 éve
szülő
commit
b9836f393f

+ 34 - 0
ncse/src/main/java/com/yingyangfly/ncse/adapter/MultipleChoiceAdapter.kt

@@ -0,0 +1,34 @@
+package com.yingyangfly.ncse.adapter
+
+import android.text.TextUtils
+import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
+import com.yingyangfly.baselib.db.QuestionsBean
+import com.yingyangfly.ncse.R
+import com.yingyangfly.ncse.databinding.ItemNcseMultipleChoiceBinding
+
+class MultipleChoiceAdapter(override val layoutId: Int = R.layout.item_ncse_multiple_choice) :
+    BaseDataBindingAdapter<QuestionsBean,ItemNcseMultipleChoiceBinding>() {
+
+    var onNumClickListener: ((bean: QuestionsBean) -> Unit)? = null
+    override fun onBindViewHolder(binding: ItemNcseMultipleChoiceBinding, item: QuestionsBean, position: Int) {
+        binding.data = item
+        binding.radioChoice.clearCheck()
+        if(TextUtils.isEmpty(item.inputString).not()) {
+            binding.radioCorrect.isChecked = TextUtils.equals(item.inputString, "是")
+            binding.radioDeny.isChecked = TextUtils.equals(item.inputString, "否")
+        }
+        binding.radioChoice.setOnCheckedChangeListener { group, checkedId ->
+            item.reviewId = item.id
+            item.reviewAnswer = ""
+            if (checkedId == R.id.radioCorrect) {
+                item.inputString = "是"
+                item.correct = "1"
+                onNumClickListener?.invoke(item)
+            } else if (checkedId == R.id.radioDeny) {
+                item.inputString = "否"
+                item.correct = "0"
+                onNumClickListener?.invoke(item)
+            }
+        }
+    }
+}

+ 164 - 0
ncse/src/main/java/com/yingyangfly/ncse/fragment/IdentifyImageResultFragment.kt

@@ -0,0 +1,164 @@
+package com.yingyangfly.ncse.fragment
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.view.MotionEvent
+import android.view.View
+import androidx.core.os.bundleOf
+import androidx.navigation.Navigation
+import com.yingyangfly.baselib.base.BaseFragment
+import com.yingyangfly.baselib.db.QuestionsBean
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
+import com.yingyangfly.baselib.ext.toast
+import com.yingyangfly.ncse.R
+import com.yingyangfly.ncse.adapter.MultipleChoiceAdapter
+import com.yingyangfly.ncse.databinding.FragmentIdentifyImageResultBinding
+
+
+/**
+ * 识图结果
+ */
+class IdentifyImageResultFragment : BaseFragment<FragmentIdentifyImageResultBinding>(), View.OnTouchListener {
+
+    private var questionId = 0
+    private val choiceItemList = mutableListOf<QuestionsBean>()
+    private val adapter by lazy {MultipleChoiceAdapter()}
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        questionId = arguments?.getInt("questionId") ?: 116
+        super.onCreate(savedInstanceState)
+    }
+
+    override fun initViews() {
+        binding {
+            rvChoice.adapter = adapter
+            adapter.onNumClickListener = {
+                if (questionsDao != null) {
+                    questionsDao?.update(it)
+                }
+            }
+        }
+    }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun initListener() {
+        binding {
+            btnPrevious.setOnTouchListener(this@IdentifyImageResultFragment)
+            btnNext.setOnTouchListener(this@IdentifyImageResultFragment)
+        }
+    }
+
+    override fun initData() {
+
+    }
+
+    override fun onResume() {
+        super.onResume()
+        loadData()
+    }
+
+
+    /**
+     * 加载数据
+     */
+    private fun loadData() {
+        choiceItemList.clear()
+        if (questionsDao != null) {
+            val firstquestion = questionsDao?.getQuestion(questionId)
+            if (firstquestion != null) {
+                choiceItemList.add(firstquestion)
+            }
+            val secondQuestionnId = questionId + 1
+            val secondQuestion = questionsDao?.getQuestion(secondQuestionnId)
+            if (secondQuestion != null) {
+                choiceItemList.add(secondQuestion)
+            }
+            val thirdQuestionId = questionId + 2
+            val thirdQuestion = questionsDao?.getQuestion(thirdQuestionId)
+            if (thirdQuestion != null) {
+                choiceItemList.add(thirdQuestion)
+            }
+            val fourthQuestionId = questionId + 3
+            val fourthQuestion = questionsDao?.getQuestion(fourthQuestionId)
+            if (fourthQuestion != null) {
+                choiceItemList.add(fourthQuestion)
+            }
+
+        }
+        adapter.setData(choiceItemList)
+    }
+
+
+    /**
+     * 非空判断
+     */
+    private fun judge(): Boolean {
+        if (choiceItemList.isEmpty().not()) {
+            choiceItemList.forEach {
+                if (it.inputString.isNullOrEmpty()) {
+                    "请判断答案是否正确".toast()
+                    return false
+                }
+            }
+        }
+        return true
+    }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                if (v.id == R.id.btnPrevious) {
+                    previousPage(v)
+                } else if (v.id == R.id.btnNext) {
+                    nextPage(v)
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
+
+    /**
+     * 上一页
+     */
+    private fun previousPage(v: View) {
+        val controller = Navigation.findNavController(v)
+        val bundle = bundleOf("questionId" to questionId+3)
+        controller.navigate(
+            R.id.action_identifyImageResultFragment_to_namingAbilityFragment,
+            bundle
+        )
+    }
+
+    /**
+     * 下一页
+     */
+    private fun nextPage(v: View) {
+        if (judge()) {
+            if (questionId == 124){
+
+            } else {
+                val controller = Navigation.findNavController(v)
+                val bundle = bundleOf("questionId" to questionId+4)
+                controller.navigate(
+                    R.id.action_identifyImageResultFragment_to_namingAbilityFragment,
+                    bundle
+                )
+            }
+        }
+    }
+
+}

+ 1 - 1
ncse/src/main/java/com/yingyangfly/ncse/fragment/ListenAndRepeatFragment.kt

@@ -184,7 +184,7 @@ class ListenAndRepeatFragment : BaseFragment<FragmentListenAndRepeatBinding>(),V
         } else if (questionId == 116) {
             val bundle = bundleOf("questionId" to questionId)
             val controller = Navigation.findNavController(v)
-//            controller.navigate(R.id.action_listenAndRepeatFragment_to_namingAbilityFragment,bundle)
+            controller.navigate(R.id.action_listenAndRepeatFragment_to_namingAbilityFragment,bundle)
         } else {
             binding.judgeRadio.clearCheck()
             loadData()

+ 130 - 0
ncse/src/main/java/com/yingyangfly/ncse/fragment/NamingAbilityFragment.kt

@@ -0,0 +1,130 @@
+package com.yingyangfly.ncse.fragment
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.view.MotionEvent
+import android.view.View
+import androidx.core.os.bundleOf
+import androidx.navigation.Navigation
+import com.yingyangfly.baselib.base.BaseFragment
+import com.yingyangfly.baselib.db.QuestionsBean
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
+import com.yingyangfly.ncse.R
+import com.yingyangfly.ncse.databinding.FragmentNamingAbilityBinding
+
+class NamingAbilityFragment : BaseFragment<FragmentNamingAbilityBinding>(), View.OnTouchListener {
+
+        private var questionId = 0
+    private var question: QuestionsBean? = null
+
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        questionId = arguments?.getInt("questionId")?:116
+        super.onCreate(savedInstanceState)
+    }
+
+    override fun initViews() {
+
+    }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun initListener() {
+        binding {
+            btnPrevious.setOnTouchListener(this@NamingAbilityFragment)
+            btnNext.setOnTouchListener(this@NamingAbilityFragment)
+        }
+    }
+
+    override fun initData() {
+
+    }
+
+    override fun onResume() {
+        super.onResume()
+        loadData()
+    }
+
+    /**
+     * 加载数据
+     */
+    private fun loadData() {
+        if (questionsDao != null) {
+            question = questionsDao?.getQuestion(questionId)
+            if (question != null) {
+                binding.data = question
+            }
+        }
+    }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when(event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                when (v.id) {
+                    R.id.btnPrevious -> {
+                        pageUp(v)
+                    }
+                    R.id.btnNext -> {
+                        pageNext(v)
+
+                    }
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.btnPrevious || v.id == R.id.btnNext) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
+
+    /**
+     * 下一页
+     */
+    private fun pageNext(v: View) {
+        if (questionId < 119 || (questionId > 119 && questionId < 123) || (questionId >123 && questionId < 127)){
+            questionId++
+            loadData()
+        } else if (questionId == 119 || questionId == 123 || questionId == 127) {
+            val bundle = bundleOf("questionId" to questionId-3)
+            val controller = Navigation.findNavController(v)
+            controller.navigate(R.id.action_namingAbilityFragment_to_identifyImageResultFragment,bundle)
+        }
+    }
+
+
+    /**
+     * 上一页
+     */
+    private fun pageUp(v: View) {
+        if (questionId == 116) {
+            questionId--
+            val bundle = bundleOf("questionId" to questionId)
+            val controller = Navigation.findNavController(v)
+            controller.navigate(R.id.action_namingAbilityFragment_to_listenAndRepeatFragment,bundle)
+        } else if(questionId == 120 || questionId == 124){
+            val bundle = bundleOf("questionId" to questionId-4)
+            val controller = Navigation.findNavController(v)
+            controller.navigate(R.id.action_namingAbilityFragment_to_identifyImageResultFragment,bundle)
+        }else {
+            questionId--
+            loadData()
+        }
+    }
+
+}
+
+
+
+
+
+
+

+ 121 - 0
ncse/src/main/res/layout/fragment_identify_image_result.xml

@@ -0,0 +1,121 @@
+<?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">
+
+        <TextView
+            android:id="@+id/tvTitle"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/divider_202px"
+            android:layout_marginTop="@dimen/divider_53px"
+            android:layout_marginEnd="@dimen/divider_200px"
+            android:gravity="center"
+            android:text="@string/may_i_ask_if_subjects_correctly_name_animals_picture"
+            android:textColor="@color/color_FF222222"
+            android:textSize="@dimen/divider_34px"
+            android:textStyle="bold"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+
+
+        <com.google.android.material.card.MaterialCardView
+            android:id="@+id/contentLayout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/divider_32px"
+            android:minWidth="@dimen/divider_620px"
+            android:minHeight="@dimen/divider_264px"
+            android:theme="@style/Theme.MaterialComponents.NoActionBar"
+            app:cardBackgroundColor="@android:color/white"
+            app:cardCornerRadius="@dimen/divider_20px"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tvTitle"
+            app:strokeColor="@color/color_FF979797"
+            app:strokeWidth="@dimen/divider_1px">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <LinearLayout
+                    android:layout_width="@dimen/divider_191px"
+                    android:layout_height="match_parent"
+                    android:background="@color/color_FF4A76FF"
+                    android:gravity="center"
+                    android:orientation="vertical">
+
+                    <androidx.appcompat.widget.AppCompatImageView
+                        android:layout_width="@dimen/divider_65px"
+                        android:layout_height="@dimen/divider_86px"
+                        android:layout_gravity="center"
+                        android:background="@mipmap/icon_doctor_head" />
+
+                    <androidx.appcompat.widget.AppCompatTextView
+                        android:id="@+id/tvYear"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/divider_31px"
+                        android:background="@color/color_FF4A76FF"
+                        android:gravity="center_horizontal"
+                        android:text="@string/staff_judgment"
+                        android:textColor="@android:color/white"
+                        android:textSize="@dimen/divider_24px" />
+
+                </LinearLayout>
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/rvChoice"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginTop="@dimen/divider_15px"
+                    android:layout_marginBottom="@dimen/divider_23px"
+                    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
+
+            </LinearLayout>
+        </com.google.android.material.card.MaterialCardView>
+
+
+
+        <androidx.appcompat.widget.AppCompatButton
+            android:id="@+id/btnPrevious"
+            android:layout_width="@dimen/divider_240px"
+            android:layout_height="@dimen/divider_68px"
+            android:layout_marginStart="@dimen/divider_307px"
+            android:layout_marginBottom="@dimen/divider_60px"
+            android:background="@drawable/bg_previous_question"
+            android:gravity="center"
+            android:text="@string/previous_page"
+            android:textColor="@color/color_FF4A76FF"
+            android:textSize="@dimen/divider_28px"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent" />
+
+        <androidx.appcompat.widget.AppCompatButton
+            android:id="@+id/btnNext"
+            android:layout_width="@dimen/divider_240px"
+            android:layout_height="@dimen/divider_68px"
+            android:layout_marginEnd="@dimen/divider_305px"
+            android:layout_marginBottom="@dimen/divider_60px"
+            android:background="@drawable/bg_next_question"
+            android:gravity="center"
+            android:text="@string/continues"
+            android:textColor="@android:color/white"
+            android:textSize="@dimen/divider_28px"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>

+ 71 - 0
ncse/src/main/res/layout/fragment_naming_ability.xml

@@ -0,0 +1,71 @@
+<?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">
+
+        <data>
+
+            <variable
+                name="data"
+                type="com.yingyangfly.baselib.db.QuestionsBean" />
+        </data>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+                <TextView
+                    android:id="@+id/tvTitle"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/divider_27px"
+                    android:text="@string/please_name_animals_in_the_picture"
+                    android:textColor="@color/color_FF222222"
+                    android:textSize="@dimen/divider_34px"
+                    android:textStyle="bold"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <androidx.appcompat.widget.AppCompatImageView
+                    android:layout_width="@dimen/divider_761px"
+                    android:layout_height="@dimen/divider_359px"
+                    android:layout_marginTop="@dimen/divider_57px"
+                    android:scaleType="centerInside"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tvTitle"
+                    app:loadImg="@{data.reviewDesc}" />
+
+                <androidx.appcompat.widget.AppCompatButton
+                    android:id="@+id/btnPrevious"
+                    android:layout_width="@dimen/divider_240px"
+                    android:layout_height="@dimen/divider_68px"
+                    android:layout_marginStart="@dimen/divider_307px"
+                    android:layout_marginBottom="@dimen/divider_60px"
+                    android:background="@drawable/bg_previous_question"
+                    android:gravity="center"
+                    android:text="@string/previous_question"
+                    android:textColor="@color/color_FF4A76FF"
+                    android:textSize="@dimen/divider_28px"
+                    android:textStyle="bold"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintStart_toStartOf="parent" />
+
+                <androidx.appcompat.widget.AppCompatButton
+                    android:id="@+id/btnNext"
+                    android:layout_width="@dimen/divider_240px"
+                    android:layout_height="@dimen/divider_68px"
+                    android:layout_marginEnd="@dimen/divider_305px"
+                    android:layout_marginBottom="@dimen/divider_60px"
+                    android:background="@drawable/bg_next_question"
+                    android:gravity="center"
+                    android:text="@string/continues"
+                    android:textColor="@android:color/white"
+                    android:textSize="@dimen/divider_28px"
+                    android:textStyle="bold"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>

+ 67 - 0
ncse/src/main/res/layout/item_ncse_multiple_choice.xml

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+
+    <data>
+
+        <variable
+            name="data"
+            type="com.yingyangfly.baselib.db.QuestionsBean" />
+    </data>
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/divider_57px"
+        android:layout_marginTop="@dimen/divider_24px"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="@dimen/divider_230px"
+            android:layout_height="match_parent"
+            android:layout_marginStart="@dimen/divider_16px"
+            android:background="@drawable/bg_choice_item"
+            android:gravity="center_vertical"
+            android:paddingStart="@dimen/divider_17px"
+            android:paddingEnd="@dimen/divider_17px"
+            android:text="@{data.reviewItem}"
+            android:textColor="@color/txt_radio_color"
+            android:textSize="@dimen/divider_24px"
+            android:textStyle="bold" />
+
+        <RadioGroup
+            android:id="@+id/radioChoice"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:orientation="horizontal">
+
+            <RadioButton
+                android:id="@+id/radioCorrect"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_marginStart="@dimen/divider_20px"
+                android:background="@drawable/selector_questions_choice"
+                android:button="@null"
+                android:text="@string/correct"
+                android:textColor="@color/txt_radio_color"
+                android:textSize="@dimen/divider_24px"
+                android:textStyle="bold" />
+
+            <RadioButton
+                android:id="@+id/radioDeny"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_marginStart="@dimen/divider_12px"
+                android:layout_marginEnd="@dimen/divider_19px"
+                android:background="@drawable/selector_questions_choice"
+                android:button="@null"
+                android:text="@string/deny"
+                android:textColor="@color/txt_radio_color"
+                android:textSize="@dimen/divider_24px"
+                android:textStyle="bold" />
+
+        </RadioGroup>
+    </LinearLayout>
+
+</layout>

+ 22 - 2
ncse/src/main/res/navigation/nav_ncse.xml

@@ -56,8 +56,8 @@
         <action android:id="@+id/action_listenAndRepeatFragment_to_lookPictureFragment"
             app:destination="@+id/lookPictureFragment"/>
 
-<!--        <action android:id="@+id/action_listenAndRepeatFragment_to_namingAbilityFragment"-->
-<!--            app:destination="@+id/namingAbilityFragment"/>-->
+        <action android:id="@+id/action_listenAndRepeatFragment_to_namingAbilityFragment"
+            app:destination="@+id/namingAbilityFragment"/>
     </fragment>
 
     <fragment android:id="@+id/lookPictureFragment"
@@ -68,5 +68,25 @@
             app:destination="@+id/listenAndRepeatFragment"/>
     </fragment>
 
+    <fragment android:id="@+id/namingAbilityFragment"
+        android:name="com.yingyangfly.ncse.fragment.NamingAbilityFragment"
+        android:label="NamingAbilityFragment">
+
+        <action android:id="@+id/action_namingAbilityFragment_to_listenAndRepeatFragment"
+            app:destination="@+id/listenAndRepeatFragment"/>
+
+        <action android:id="@+id/action_namingAbilityFragment_to_identifyImageResultFragment"
+            app:destination="@+id/identifyImageResultFragment"/>
+    </fragment>
+
+    <fragment android:id="@+id/identifyImageResultFragment"
+        android:name="com.yingyangfly.ncse.fragment.IdentifyImageResultFragment"
+        android:label="IdentifyImageResultFragment">
+
+        <action android:id="@+id/action_identifyImageResultFragment_to_namingAbilityFragment"
+            app:destination="@+id/namingAbilityFragment"/>
+
+    </fragment>
+
 
 </navigation>

+ 2 - 0
ncse/src/main/res/values/strings.xml

@@ -11,4 +11,6 @@
     <string name="you_will_hear_a_sentence_please_reply_clearly_after_listening" tools:ignore="ResourceName">您将听到一段数字,听完后请您清楚的复述</string>
     <string name="click_play" tools:ignore="ResourceName">点击播放</string>
     <string name="please_name_animals_in_the_picture" tools:ignore="ResourceName">请您说出图片中物品的名称</string>
+    <string name="may_i_ask_if_subjects_correctly_name_animals_picture" tools:ignore="ResourceName">请问受试者是否正确说出图中物品的名称</string>
+    <string name="previous_page" tools:ignore="ResourceName">上一页</string>
 </resources>