app/build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/AndroidManifest.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dollearn/student/dialog/GameTypeDialog.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dollearn/student/network/Apis.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dollearn/student/ui/home/ScheduleActivityNew.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/drawable/bg_black_line_10dp.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/activity_schedul_new.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/dialog_game_type.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/build.gradle
@@ -10,8 +10,8 @@ applicationId "com.dollearn.student" minSdkVersion 21 targetSdkVersion 30 versionCode 1 versionName "1.0" versionCode 4 versionName "1.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } app/src/main/AndroidManifest.xml
@@ -102,6 +102,8 @@ android:screenOrientation="landscape"/> <activity android:name=".ui.home.SuperListenActivity" android:label="自主游戏1—超级听力" android:screenOrientation="landscape"/> <activity android:name=".ui.home.ScheduleActivityNew" android:screenOrientation="landscape"/> </application> app/src/main/java/com/dollearn/student/dialog/GameTypeDialog.kt
New file @@ -0,0 +1,67 @@ package com.dollearn.student.dialog import android.os.Bundle import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.DialogFragment import cn.sinata.xldutils.utils.screenWidth import com.dollearn.student.R import kotlinx.android.synthetic.main.dialog_game_type.* import org.jetbrains.anko.wrapContent class GameTypeDialog: DialogFragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? = inflater.inflate(R.layout.dialog_game_type,container,false) private val isStory by lazy { arguments?.getBoolean("isStory",false)?:false } //true 是故事类型选择 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setStyle(STYLE_NO_FRAME, R.style.FadeDialog) } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) dialog?.window?.setLayout((screenWidth()*0.45).toInt(), wrapContent) dialog?.window?.setGravity(Gravity.CENTER) dialog?.setCanceledOnTouchOutside(false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) if (isStory){ tv_title.text = "请选择故事类型" tv_1.text = "自主故事1—看图配音" tv_2.text = "自主故事2—框架记忆" } tv_cancel.setOnClickListener { dismissAllowingStateLoss() } tv_1.setOnClickListener { callback?.onOk(1) dismissAllowingStateLoss() } tv_2.setOnClickListener { callback?.onOk(2) dismissAllowingStateLoss() } } interface OnClickCallback{ fun onOk(d:Int) } private var callback:OnClickCallback? = null fun setCallback(callback:OnClickCallback){ this.callback = callback } } app/src/main/java/com/dollearn/student/network/Apis.kt
@@ -5,6 +5,7 @@ // private const val TEST_URL = "http://vwpmxwbhv59i.guyubao.com/" //周帅内网 private const val TEST_URL = "https://dollearn.com/api/" //外网 // private const val TEST_URL = "http://192.168.110.64:9000/" //外网 private const val LINE_URL = "http://8.137.22.229:56666/" //正式服 val BASE_URL = if (isTest) TEST_URL else LINE_URL app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt
@@ -103,8 +103,8 @@ ResultActivity.startResult(this,day,week,season,4,totalCount,rightCount,data!!.data.integral,time,data!!.data.id) finish() }else{ view_pager.setCurrentItem(view_pager.currentItem+1,true) (fragments[view_pager.currentItem+1] as QAFragment).recover() view_pager.setCurrentItem(view_pager.currentItem+1,true) tv_last.visible() indexAdapter.notifyDataSetChanged() } app/src/main/java/com/dollearn/student/ui/home/ScheduleActivityNew.kt
@@ -1,73 +1,225 @@ package com.dollearn.student.ui.home import androidx.fragment.app.Fragment import android.widget.TextView import androidx.core.os.bundleOf import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.utils.showAllowingStateLoss import com.dollearn.student.R import com.dollearn.student.dialog.GameTypeDialog import com.dollearn.student.dialog.TipDialog import com.dollearn.student.network.Apis import com.dollearn.student.network.HttpManager import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity import com.dollearn.student.utils.Const import com.dollearn.student.utils.event.EmptyEvent import com.dollearn.student.utils.event.IntEvent import kotlinx.android.synthetic.main.activity_schedul.* import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.activity_schedul_new.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.jetbrains.anko.backgroundResource import org.jetbrains.anko.browse import org.jetbrains.anko.startActivity import org.jetbrains.anko.startActivityForResult class ScheduleActivityNew :TransparentStatusBarActivity(){ override fun setContentView() = R.layout.activity_schedul_new private val titles = arrayOf("Day 1", "Day 2", "Day 3", "Day 4", "Day 5", "自主游戏", "听故事") private val frags = arrayListOf<Fragment>() val week by lazy { intent.getIntExtra("week",0) } val season by lazy { intent.getIntExtra("season",0) } var currentDay = 1 val dailyViews by lazy { arrayListOf(cl_1,cl_2,cl_3,cl_4,cl_5,cl_6,cl_7) } override fun initClick() { cl_1.clickDelay { showDialog("加载题目...") HttpManager.listenSelectPicture(season, week, 1).request(this,false, {_,data-> startActivityForResult<ListenActivity>(1,"data" to data,"day" to 1,"week" to week,"season" to season) EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER)) }){_,msg-> handleError(msg) } } cl_2.clickDelay { showDialog("加载题目...") HttpManager.pictureSelectVoice(season, week, 2).request(this,false, {_,data-> startActivityForResult<ChooseVoiceActivity>(1,"data" to data,"day" to 2,"week" to week,"season" to season) EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER)) }){_,msg-> handleError(msg) } } cl_3.clickDelay { showDialog("加载题目...") HttpManager.induceExclude(season, week, 3).request(this,false, {_,data-> startActivityForResult<IncludeActivity>(1,"data" to data,"day" to 3,"week" to week,"season" to season) EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER)) }){_,msg-> handleError(msg) } } cl_4.clickDelay { showDialog("加载题目...") HttpManager.questionsAndAnswers(season, week, 4).request(this,false, {_,data-> startActivityForResult<QAActivity>(1,"data" to data,"day" to 4,"week" to week,"season" to season) EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER)) }){_,msg-> handleError(msg) } } cl_5.clickDelay { showDialog("加载题目...") HttpManager.pictureMateVoice(season, week, 5).request(this,false,{_,data-> startActivityForResult<MatchActivity>(1,"data" to data,"day" to 5,"week" to week,"season" to season) EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER)) }){_,msg-> handleError(msg) } } cl_6.clickDelay { val gameTypeDialog = GameTypeDialog() gameTypeDialog.setCallback(object :GameTypeDialog.OnClickCallback{ override fun onOk(d: Int) { if (d == 1){ HttpManager.userGameDifficulty(week).request(this@ScheduleActivityNew){_,data-> startActivity<SuperListenActivity>("week" to week,"season" to season,"level" to (data?:0)) EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER)) } }else{ showDialog("加载题目...") HttpManager.gameMemory(season, week).request(this@ScheduleActivityNew){_,data-> startActivity<MemoryActivity>("data" to data,"week" to week,"season" to season) EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER)) } } } }) gameTypeDialog.show(supportFragmentManager,"game") } cl_7.clickDelay { val gameTypeDialog = GameTypeDialog() gameTypeDialog.arguments = bundleOf("isStory" to true) gameTypeDialog.setCallback(object :GameTypeDialog.OnClickCallback{ override fun onOk(d: Int) { if (d == 1){ showDialog("加载题目...") HttpManager.lookPictureDbu(season, week).request(this@ScheduleActivityNew){_,data-> startActivity<LookImgActivity>("data" to data,"week" to week,"season" to season) EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER)) } }else{ showDialog("加载题目...") HttpManager.frameworkMemory(season, week).request(this@ScheduleActivityNew){_,data-> startActivity<ListenStoryActivity>("data" to data,"week" to week,"season" to season) EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER)) } } } }) gameTypeDialog.show(supportFragmentManager,"game") } } override fun initView() { title = "" getSchedule() EventBus.getDefault().register(this) } override fun onResume() { super.onResume() getSchedule() } private fun getSchedule(){ HttpManager.studySchedule(week,1).request(this){_,data-> data?.apply { currentDay = day initTab(if (computeSchedule == 100) 7 else day) tv_current.text = "当前周目:第 ${week} 周" tv_progress.text = "${computeSchedule}%" tv_total.text = "${totalStudy}小时" tv_today.text = "${todayStudy}小时" progress_bar.progress = computeSchedule formatProgress(listen,tv_state) formatProgress(look,tv_state_2) formatProgress(induction,tv_state_3) formatProgress(answer,tv_state_4) formatProgress(pair,tv_state_5) } } } private fun initTab(day:Int) { titles.forEachIndexed { index, s -> if (index<5){ frags.add(DailyFragment.newInstance(index+1)) }else frags.add(WeekendFragment.newInstance(index+1)) //设置是否可点击 dailyViews.forEachIndexed { index, constraintLayout -> if (index in day until 6){ dailyViews[index].isEnabled = false dailyViews[index].alpha = 0.5f }else{ dailyViews[index].isEnabled = true dailyViews[index].alpha = 1f } tab_bar.setViewPager(view_pager, titles,this,frags) tab_bar.currentTab = currentDay-1 view_pager.offscreenPageLimit = day //设置不可点击的day (day until 6).forEach { tab_bar.getTitleView(it).isEnabled = false } if (tab_bar.currentTab == 0) tab_bar.updateTabStyles() } fun unLockNext(day: Int){ currentDay = day tab_bar.getTitleView(day - 1).isEnabled = true tab_bar.currentTab = currentDay-1 private fun formatProgress(progress:Int,tv: TextView){ tv.text = when(progress){ -1, 0->{ tv.backgroundResource = R.drawable.bg_red_9dp "未完成" } 100->{ tv.backgroundResource = R.drawable.bg_blue_9dp "已完成" } else->{ tv.backgroundResource = R.drawable.bg_pink_9dp "剩余:${progress}%" } } } private fun handleError(msg:String){ if (msg.contains("会员")){ val tipDialog = TipDialog() tipDialog.arguments = bundleOf("msg" to msg,"ok" to "成为会员") tipDialog.setCallback(object : TipDialog.OnClickCallback{ override fun onOk() { browse(Apis.SHARE_URL,true) } override fun onCancel() { } }) tipDialog.showAllowingStateLoss(supportFragmentManager,"vip") }else{ myToast(msg) } } @Subscribe fun nextSubject(e: IntEvent){ if (e.code == Const.EventCode.NEXT_SUBJECT){ (frags[view_pager.currentItem] as DailyFragment).nextSubject(e.i) when(e.i){ 2->{ cl_2.callOnClick() } 3->{ cl_3.callOnClick() } 4->{ cl_4.callOnClick() } 5->{ cl_5.callOnClick() } } } } app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt
@@ -32,7 +32,7 @@ weekAdapter.setOnItemClickListener { view, position -> if (weeks[position].canStudy) startActivity<ScheduleActivity>("week" to weeks[position].week,"season" to seasonAdapter.checked+1) startActivity<ScheduleActivityNew>("week" to weeks[position].week,"season" to seasonAdapter.checked+1) else{ val msg = if (seasonAdapter.checked == 0||weeks[0].canStudy) "请先完成上一周目学习后再试" else "请先完成上一季度学习后再试" val tipDialog = TipDialog() app/src/main/res/drawable/bg_black_line_10dp.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="16dp"/> <stroke android:color="@color/textColor" android:width="2dp"/> </shape> app/src/main/res/layout/activity_schedul_new.xml
@@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="@color/colorRed" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <androidx.constraintlayout.widget.ConstraintLayout @@ -184,6 +183,7 @@ app:layout_constraintTop_toBottomOf="@id/cl_top" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginTop="10dp" android:scrollbars="none" app:layout_constraintStart_toStartOf="@id/cl_top" app:layout_constraintEnd_toStartOf="@id/center"> <LinearLayout @@ -443,7 +443,7 @@ android:id="@+id/tv_name_6" android:layout_marginTop="16dp" android:textColor="@color/textColor" android:text="自主游戏1- 超级听力"/> android:text=""/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -458,11 +458,24 @@ android:layout_marginTop="9dp" android:textSize="12sp" android:textStyle="bold"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/tv_d6" android:layout_marginStart="24dp" android:textSize="16sp" android:textStyle="bold" android:textColor="@color/textColor" android:text="自主游戏"/> </androidx.constraintlayout.widget.ConstraintLayout> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/cl_7" android:layout_marginBottom="20dp" android:layout_marginTop="10dp" android:background="@drawable/bg_white_8dp"> <TextView @@ -476,7 +489,7 @@ android:layout_marginStart="30dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:text="第 7 天"/> android:text="听故事"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -487,8 +500,7 @@ android:textStyle="bold" android:id="@+id/tv_name_7" android:layout_marginTop="16dp" android:textColor="@color/textColor" android:text="自主游戏2-超级记忆"/> android:textColor="@color/textColor"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" app/src/main/res/layout/dialog_game_type.xml
New file @@ -0,0 +1,66 @@ <?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="wrap_content" android:paddingBottom="20dp" android:background="@drawable/bg_white_10dp"> <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="22dp" android:layout_marginEnd="14dp" android:gravity="center" android:text="请选择游戏类型" android:textColor="@color/textColor" android:textSize="18sp" android:textStyle="bold" app:layout_constraintTop_toTopOf="parent" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_1" android:gravity="center" android:paddingVertical="20dp" android:textSize="18sp" android:layout_marginHorizontal="40dp" android:textStyle="bold" android:background="@drawable/bg_black_line_10dp" android:textColor="@color/textColor" app:layout_constraintTop_toBottomOf="@id/tv_title" android:layout_marginTop="20dp" android:text="自主游戏1-超级听力"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_2" android:gravity="center" android:paddingVertical="20dp" android:textSize="16sp" android:layout_marginHorizontal="40dp" android:textStyle="bold" android:background="@drawable/bg_black_line_10dp" android:textColor="@color/textColor" app:layout_constraintTop_toBottomOf="@id/tv_1" android:layout_marginTop="18sp" android:text="自主游戏2-超级记忆"/> <TextView android:id="@+id/tv_cancel" android:layout_width="90dp" android:layout_height="40dp" android:gravity="center" android:text="关闭" android:textColor="@color/textColor" android:textSize="15sp" app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="20dp" app:layout_constraintEnd_toEndOf="parent" android:textStyle="bold" android:background="@drawable/bg_blue_line_4dp" app:layout_constraintTop_toBottomOf="@id/tv_2" /> </androidx.constraintlayout.widget.ConstraintLayout>