lmw
2024-10-23 2f204867ad034d3a95ba9acc112d6507f296447b
app/src/main/java/com/sinata/xqmuse/ui/mine/LevelActivity.kt
@@ -1,57 +1,63 @@
package com.sinata.xqmuse.ui.mine
import androidx.recyclerview.widget.GridLayoutManager
import android.webkit.WebChromeClient
import android.webkit.WebSettings
import android.webkit.WebViewClient
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SpanBuilder
import cn.sinata.xldutils.visible
import com.sinata.xqmuse.R
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.request
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
import com.sinata.xqmuse.ui.course.adapter.MedalAdapter
import kotlinx.android.synthetic.main.activity_level.*
import org.jetbrains.anko.backgroundColor
class LevelActivity : TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_level
    private val count by lazy { intent.getIntExtra("count",0) }
    private val level = arrayListOf("新人","青铜达人","白银达人","黄金达人","钻石达人","大师达人","王者达人")
    private val levelCount = arrayListOf(0,10,30,60,90,120,240)
    private val gotList = arrayListOf<String>()
    private val adapter = MedalAdapter(gotList)
    override fun initClick() {
        iv_back.setOnClickListener { finish() }
        tv_rule.setOnClickListener {
        }
    }
    override fun initView() {
        val levelS = "LV%d.%s".format(getLevel(),level[getLevel()-1])
        tv_level.text = SpanBuilder(levelS).size(levelS.indexOf("."),levelS.length,16).build()
        tv_count.text = "打卡次数:${count}"
        if (getLevel() != 7){
            tv_next.visible()
            tv_next.text = "再打卡%d次,可升级%s".format(levelCount[getLevel()]-count,level[getLevel()])
        }
        rv_medal.layoutManager = GridLayoutManager(this,4)
        rv_medal.adapter = adapter
        gotList.addAll(level.take(getLevel()))
        adapter.notifyDataSetChanged()
        titleBar.gone()
        val settings = webView.settings
        settings.javaScriptEnabled = true
        settings.javaScriptCanOpenWindowsAutomatically = true
        settings.defaultTextEncodingName = "utf-8"
        settings.domStorageEnabled = true
        settings.setSupportZoom(true)
//        settings.textZoom = 200
        settings.useWideViewPort = true
        settings.loadWithOverviewMode = true
        settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
        webView.webChromeClient = object : WebChromeClient() {}
        webView.webViewClient = object : WebViewClient() {}
        webView.backgroundColor = 0
        webView.background.alpha = 0
        getInfo()
    }
    /**
     * 1 新人
    2 青铜达人:打卡10次。
    3 白银达人:打卡30次。
    4 黄金达人:打卡60次。
    5 钻石达人:打卡90次。
    6 大师达人:打卡120次。
    7 王者达人:打卡240次。
     */
    private fun getLevel() = when(count){
        in 0..9-> 1
        in 10..29-> 2
        in 30..59-> 3
        in 60..89-> 4
        in 90..119-> 5
        in 120..239-> 6
        else -> 7
    private fun getInfo() {
        HttpManager.healingLevel().request(this) { _, data ->
            iv_level.setImageURI(data?.levelIcon)
            val s = "当前等级 ${data?.growthValue}/${data?.nextLevel}"
            tv_current.text = SpanBuilder(s).bold(4,s.indexOf("/")).build()
            tv_next.text = "你离下一等级还差${data?.differenceLevel}经验值,加油!"
            val sHead =
                "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
            webView!!.loadDataWithBaseURL(
                null,
                sHead + data?.content,
                "text/html",
                "utf-8",
                null
            )
            mProgressBar.progress = (data?.growthValue?:0)*100/(data?.nextLevel?:100)
        }
    }
}