From b6d14ec6c19cddb1c8caf1d024e77d250a203929 Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期四, 22 五月 2025 12:48:11 +0800 Subject: [PATCH] save --- app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt | 11 ++ app/src/main/res/layout/item_index.xml | 41 +++++---- app/src/main/res/drawable/bg_white_grey_line_1.xml | 6 + app/src/main/res/drawable/bg_orange_8dp.xml | 2 app/src/main/res/drawable/bg_white_1dp.xml | 5 + /dev/null | 10 -- app/src/main/res/drawable/bg_white_8dp_padding.xml | 2 app/src/main/java/com/dollearn/student/network/Apis.kt | 4 app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt | 30 ++++++- app/src/main/res/layout/activity_listen.xml | 4 app/src/main/res/drawable/bg_white_orange_line_1.xml | 6 + app/src/main/res/layout/fragment_choose_voice.xml | 12 +- app/src/main/res/xml/scene_fragment_choose_voice.xml | 72 +++++++++--------- app/src/main/java/com/dollearn/student/ui/home/adapter/IndexAdapter.kt | 20 +++++ app/src/main/res/drawable/bg_white_green_line_1.xml | 6 + 15 files changed, 145 insertions(+), 86 deletions(-) diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 797acea..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="RunConfigurationProducerService"> - <option name="ignoredProducers"> - <set> - <option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" /> - </set> - </option> - </component> -</project> \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/network/Apis.kt b/app/src/main/java/com/dollearn/student/network/Apis.kt index 7ce8473..a111009 100644 --- a/app/src/main/java/com/dollearn/student/network/Apis.kt +++ b/app/src/main/java/com/dollearn/student/network/Apis.kt @@ -3,8 +3,8 @@ object Apis { private var isTest = true - private const val TEST_URL = "http://vwpmxwbhv59i.guyubao.com/" //周帅内网 -// private const val TEST_URL = "https://dollearn.com/api/" //外网 +// private const val TEST_URL = "http://vwpmxwbhv59i.guyubao.com/" //周帅内网 + private const val TEST_URL = "https://dollearn.com/api/" //外网 private const val LINE_URL = "http://8.137.22.229:56666/" //正式服 val BASE_URL = if (isTest) TEST_URL else LINE_URL diff --git a/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt index 07cb6f9..7086247 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt @@ -48,6 +48,9 @@ val indexList = arrayListOf<SortBean>() private val indexAdapter = IndexAdapter(indexList) + val vp by lazy { view_pager } + var recoverd = false //true已经恢复了进度,后续语音可以自动播放 + override fun initClick() { tv_last.setOnClickListener { val tipDialog = TipDialog() @@ -62,8 +65,8 @@ indexList.forEach { it.status = 1 } indexAdapter.notifyDataSetChanged() data?.accuracy = 0.0 - (fragments[0] as QAFragment).recover() view_pager.setCurrentItem(0,false) + (fragments[0] as QAFragment).recover() } } @@ -80,8 +83,8 @@ indexAdapter.setOnItemClickListener { view, position -> val sortBean = indexList[position] if (position!=view_pager.currentItem&&(sortBean.status!=1||position == indexList.indexOf(indexList.first { it.status == 1 }))){ - (fragments[position] as QAFragment).recover() view_pager.setCurrentItem(position,false) + (fragments[position] as QAFragment).recover() } } } @@ -100,8 +103,8 @@ ResultActivity.startResult(this,day,week,season,4,totalCount,rightCount,data!!.data.integral,time,data!!.data.id) finish() }else{ - (fragments[view_pager.currentItem+1] as QAFragment).recover() view_pager.setCurrentItem(view_pager.currentItem+1,true) + (fragments[view_pager.currentItem+1] as QAFragment).recover() tv_last.visible() indexAdapter.notifyDataSetChanged() } @@ -169,6 +172,8 @@ tv_last.visible() totalCount = data?.answerNumber?:0 rightCount = data?.correctNumber?:0 + EventBus.getDefault().post(EmptyEvent(Const.EventCode.RECOVERD)) + recoverd = true } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt index 1242aca..351a2ea 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt @@ -21,8 +21,11 @@ import com.dollearn.student.R import com.dollearn.student.utils.AudioUtils import com.dollearn.student.utils.Const +import com.dollearn.student.utils.event.EmptyEvent import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.fragment_q_a.* +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe import org.jetbrains.anko.support.v4.dip class QAFragment:BaseFragment(), AudioUtils.OnAudioStatusUpdateListener { @@ -77,6 +80,7 @@ override fun onFirstVisibleToUser() { + EventBus.getDefault().register(this) player.setOnAudioStatusUpdateListener(this) player.stopPlayMusic() handler = object : Handler(Looper.getMainLooper()){ @@ -208,14 +212,20 @@ },2000) } } - - isAutoPlaying = 1 - voiceViews.filterIndexed { index, constraintLayout -> - val subject = list[index] - constraintLayout.isEnabled&&subject.isQuestion == 1 - }.firstOrNull()?.callOnClick() } + @Subscribe + fun onEvent(e: EmptyEvent){ + if (e.code == Const.EventCode.RECOVERD){ + if (act.fragments[act.vp.currentItem] == this){ //自动播放 + isAutoPlaying = 1 + voiceViews.filterIndexed { index, constraintLayout -> + val subject = list[index] + constraintLayout.isEnabled&&subject.isQuestion == 1 + }.firstOrNull()?.callOnClick() + } + } + } /** * 恢复答案和题目ui @@ -225,6 +235,13 @@ showVoiceUi() list.forEach { it.completed = false } recoverAnswer() + if (act.fragments[act.vp.currentItem] == this&&act.recoverd) { //自动播放 + isAutoPlaying = 1 + voiceViews.filterIndexed { index, constraintLayout -> + val subject = list[index] + constraintLayout.isEnabled&&subject.isQuestion == 1 + }.firstOrNull()?.callOnClick() + } } /** @@ -444,5 +461,6 @@ override fun onDestroy() { super.onDestroy() handler?.removeCallbacksAndMessages(null) + EventBus.getDefault().unregister(this) } } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/IndexAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/IndexAdapter.kt index 5ec510a..c809dd0 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/IndexAdapter.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/adapter/IndexAdapter.kt @@ -1,17 +1,37 @@ package com.dollearn.student.ui.home.adapter +import android.view.View import android.widget.TextView import cn.sinata.xldutils.adapter.HFRecyclerAdapter import cn.sinata.xldutils.adapter.util.ViewHolder +import cn.sinata.xldutils.gone +import cn.sinata.xldutils.visible import com.dollearn.student.R import com.dollearn.student.network.entity.SortBean +import org.jetbrains.anko.backgroundColorResource +import org.jetbrains.anko.backgroundResource import org.jetbrains.anko.textColorResource import java.util.ArrayList class IndexAdapter(indexList: ArrayList<SortBean>):HFRecyclerAdapter<SortBean>(indexList, R.layout.item_index) { override fun onBind(holder: ViewHolder, position: Int, data: SortBean) { val tv_sort = holder.bind<TextView>(R.id.tv_sort) + val bg = holder.bind<View>(R.id.bg) tv_sort.text = (position+1).toString() tv_sort.textColorResource = if (data.status == 2) R.color.textColorGreen else if (data.status == 3) R.color.colorOrange else R.color.textColor99 + when(data.status){ + 2->{ + tv_sort.textColorResource = R.color.textColorGreen + bg.backgroundResource = R.drawable.bg_white_green_line_1 + } + 3->{ + tv_sort.textColorResource = R.color.colorOrange + bg.backgroundResource = R.drawable.bg_white_orange_line_1 + } + else->{ + tv_sort.textColorResource = R.color.textColor99 + bg.backgroundResource = R.drawable.bg_white_grey_line_1 + } + } } } diff --git a/app/src/main/res/drawable/bg_orange_8dp.xml b/app/src/main/res/drawable/bg_orange_8dp.xml index aa90466..22a55cd 100644 --- a/app/src/main/res/drawable/bg_orange_8dp.xml +++ b/app/src/main/res/drawable/bg_orange_8dp.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="8dp"/> - <gradient android:startColor="@color/colorDeepGreen" android:endColor="@color/colorDeepGreen" android:angle="270"/> + <gradient android:startColor="#FFA224" android:endColor="#F7802E" android:angle="270"/> </shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_white_1dp.xml b/app/src/main/res/drawable/bg_white_1dp.xml new file mode 100644 index 0000000..44768a6 --- /dev/null +++ b/app/src/main/res/drawable/bg_white_1dp.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <corners android:radius="1dp"/> + <solid android:color="@color/white"/> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_white_8dp_padding.xml b/app/src/main/res/drawable/bg_white_8dp_padding.xml index 5f20381..0b0ccfa 100644 --- a/app/src/main/res/drawable/bg_white_8dp_padding.xml +++ b/app/src/main/res/drawable/bg_white_8dp_padding.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:top="4dp" android:bottom="4dp" android:left="4dp" android:right="4dp"> + <item android:top="6dp" android:bottom="6dp" android:left="6dp" android:right="6dp"> <shape> <solid android:color="@color/white"/> <corners android:radius="8dp"/> diff --git a/app/src/main/res/drawable/bg_white_green_line_1.xml b/app/src/main/res/drawable/bg_white_green_line_1.xml new file mode 100644 index 0000000..14007d5 --- /dev/null +++ b/app/src/main/res/drawable/bg_white_green_line_1.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <corners android:radius="1dp"/> + <solid android:color="@color/white"/> + <stroke android:color="@color/textColorGreen" android:width="1dp"/> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_white_grey_line_1.xml b/app/src/main/res/drawable/bg_white_grey_line_1.xml new file mode 100644 index 0000000..fd3f6c8 --- /dev/null +++ b/app/src/main/res/drawable/bg_white_grey_line_1.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <corners android:radius="1dp"/> + <solid android:color="@color/white"/> + <stroke android:color="@color/textColor99" android:width="1dp"/> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_white_orange_line_1.xml b/app/src/main/res/drawable/bg_white_orange_line_1.xml new file mode 100644 index 0000000..c766c69 --- /dev/null +++ b/app/src/main/res/drawable/bg_white_orange_line_1.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <corners android:radius="1dp"/> + <solid android:color="@color/white"/> + <stroke android:color="@color/colorOrange" android:width="1dp"/> +</shape> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_listen.xml b/app/src/main/res/layout/activity_listen.xml index 901cd47..78765df 100644 --- a/app/src/main/res/layout/activity_listen.xml +++ b/app/src/main/res/layout/activity_listen.xml @@ -46,13 +46,11 @@ android:textStyle="bold" /> <androidx.recyclerview.widget.RecyclerView android:layout_width="wrap_content" - android:layout_height="25dp" + android:layout_height="29dp" android:id="@+id/rv_index" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:layout_marginBottom="10dp" - android:background="@color/white" - android:elevation="2dp" app:layout_constraintBottom_toTopOf="@id/tv_progress"/> <com.dollearn.student.views.NoScrollViewPager android:layout_width="match_parent" diff --git a/app/src/main/res/layout/fragment_choose_voice.xml b/app/src/main/res/layout/fragment_choose_voice.xml index b7ed982..a324135 100644 --- a/app/src/main/res/layout/fragment_choose_voice.xml +++ b/app/src/main/res/layout/fragment_choose_voice.xml @@ -17,7 +17,7 @@ android:id="@+id/cl_1" android:layout_width="0dp" android:layout_height="0dp" - android:padding="8dp" + android:padding="10dp" app:layout_constraintDimensionRatio="333:259" android:layout_marginTop="96dp" app:layout_constraintHorizontal_chainStyle="packed" @@ -25,7 +25,7 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toStartOf="@id/center" android:layout_marginEnd="11dp" - android:layout_marginBottom="4dp" + android:layout_marginBottom="2dp" app:layout_constraintBottom_toTopOf="@id/cl_3"> <TextView android:layout_width="match_parent" @@ -94,7 +94,7 @@ android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintDimensionRatio="333:259" - android:padding="8dp" + android:padding="10dp" app:layout_constraintStart_toEndOf="@id/center" android:layout_marginStart="8dp" android:background="@drawable/bg_white_8dp_padding" @@ -167,8 +167,8 @@ android:id="@+id/cl_3" android:layout_width="0dp" android:layout_height="0dp" - android:padding="8dp" - android:layout_marginBottom="10dp" + android:padding="10dp" + android:layout_marginBottom="8dp" app:layout_constraintStart_toStartOf="@id/cl_1" app:layout_constraintEnd_toEndOf="@id/cl_1" android:background="@drawable/bg_white_8dp_padding" @@ -241,7 +241,7 @@ android:id="@+id/cl_4" android:layout_width="0dp" android:layout_height="0dp" - android:padding="8dp" + android:padding="10dp" app:layout_constraintStart_toStartOf="@id/cl_2" app:layout_constraintEnd_toEndOf="@id/cl_2" android:background="@drawable/bg_white_8dp_padding" diff --git a/app/src/main/res/layout/item_index.xml b/app/src/main/res/layout/item_index.xml index 396243d..daa3c77 100644 --- a/app/src/main/res/layout/item_index.xml +++ b/app/src/main/res/layout/item_index.xml @@ -1,21 +1,26 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="28dp" - android:layout_height="25dp" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="@color/white"> - <TextView - android:id="@+id/tv_sort" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:text="1" - android:gravity="center" - android:textSize="14sp" - android:textStyle="bold" /> - <View - android:layout_width="1dp" - android:layout_height="match_parent" - app:layout_constraintEnd_toEndOf="parent" - android:id="@+id/line" - android:background="@color/textColor66"/> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="28dp" + android:layout_height="28dp" + android:id="@+id/bg" + app:layout_constraintTop_toTopOf="parent" + android:background="@color/white" + app:layout_constraintStart_toStartOf="parent" + android:layout_marginHorizontal="2dp" + android:elevation="2dp" + app:layout_constraintEnd_toEndOf="parent"> + <TextView + android:id="@+id/tv_sort" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="1" + android:gravity="center" + android:textSize="14sp" + android:textStyle="bold" /> + </androidx.constraintlayout.widget.ConstraintLayout> + </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/xml/scene_fragment_choose_voice.xml b/app/src/main/res/xml/scene_fragment_choose_voice.xml index 266a53c..b335044 100644 --- a/app/src/main/res/xml/scene_fragment_choose_voice.xml +++ b/app/src/main/res/xml/scene_fragment_choose_voice.xml @@ -45,9 +45,9 @@ motion:layout_constraintStart_toStartOf="@+id/cl_1" motion:layout_constraintEnd_toEndOf="@+id/cl_1" motion:layout_constraintTop_toTopOf="@+id/cl_1" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_width="0dp" android:layout_height="40dp"/> </ConstraintSet> @@ -58,9 +58,9 @@ motion:layout_constraintEnd_toEndOf="@+id/cl_2" motion:layout_constraintTop_toTopOf="@+id/cl_2" android:layout_width="0dp" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_height="40dp"/> </ConstraintSet> @@ -70,9 +70,9 @@ motion:layout_constraintEnd_toEndOf="@+id/cl_3" motion:layout_constraintTop_toTopOf="@+id/cl_3" android:layout_width="0dp" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_height="40dp"/> </ConstraintSet> @@ -82,9 +82,9 @@ motion:layout_constraintEnd_toEndOf="@+id/cl_4" motion:layout_constraintTop_toTopOf="@+id/cl_4" android:layout_width="0dp" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_height="40dp"/> </ConstraintSet> @@ -93,9 +93,9 @@ motion:layout_constraintStart_toStartOf="@+id/cl_1" motion:layout_constraintEnd_toEndOf="@+id/cl_1" motion:layout_constraintTop_toTopOf="@+id/cl_1" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_width="0dp" android:layout_height="40dp"/> </ConstraintSet> @@ -106,9 +106,9 @@ motion:layout_constraintEnd_toEndOf="@+id/cl_2" motion:layout_constraintTop_toTopOf="@+id/cl_2" android:layout_width="0dp" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_height="40dp"/> </ConstraintSet> @@ -118,9 +118,9 @@ motion:layout_constraintEnd_toEndOf="@+id/cl_3" motion:layout_constraintTop_toTopOf="@+id/cl_3" android:layout_width="0dp" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_height="40dp"/> </ConstraintSet> @@ -130,9 +130,9 @@ motion:layout_constraintEnd_toEndOf="@+id/cl_4" motion:layout_constraintTop_toTopOf="@+id/cl_4" android:layout_width="0dp" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_height="40dp"/> </ConstraintSet> @@ -141,9 +141,9 @@ motion:layout_constraintStart_toStartOf="@+id/cl_1" motion:layout_constraintEnd_toEndOf="@+id/cl_1" motion:layout_constraintTop_toTopOf="@+id/cl_1" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_width="0dp" android:layout_height="40dp"/> </ConstraintSet> @@ -154,9 +154,9 @@ motion:layout_constraintEnd_toEndOf="@+id/cl_2" motion:layout_constraintTop_toTopOf="@+id/cl_2" android:layout_width="0dp" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_height="40dp"/> </ConstraintSet> @@ -166,9 +166,9 @@ motion:layout_constraintEnd_toEndOf="@+id/cl_3" motion:layout_constraintTop_toTopOf="@+id/cl_3" android:layout_width="0dp" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_height="40dp"/> </ConstraintSet> @@ -178,9 +178,9 @@ motion:layout_constraintEnd_toEndOf="@+id/cl_4" motion:layout_constraintTop_toTopOf="@+id/cl_4" android:layout_width="0dp" - android:layout_marginTop="8dp" - android:layout_marginStart="4dp" - android:layout_marginEnd="4dp" + android:layout_marginTop="10dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:layout_height="40dp"/> </ConstraintSet> -- Gitblit v1.7.1