lmw
6 天以前 c42258b3bdc3527b74e05bbd917ceaa458cc205a
save
7个文件已修改
3个文件已添加
375 ■■■■■ 已修改文件
app/build.gradle 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/dialog/GameTypeDialog.kt 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/Apis.kt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/ScheduleActivityNew.kt 204 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/bg_black_line_10dp.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_schedul_new.xml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_game_type.xml 66 ●●●●● 补丁 | 查看 | 原始文档 | 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>