ApkUpdateDialog.kt 4.3 KB
Newer Older
1
package com.ydl.ydlcommon.utils
konghaorui committed
2 3 4 5

import android.app.Activity
import android.app.Dialog
import android.os.Bundle
konghaorui committed
6
import android.text.method.ScrollingMovementMethod
konghaorui committed
7 8
import android.view.View
import android.view.ViewGroup
9 10
import com.ydl.ydlcommon.R
import com.ydl.ydlcommon.bean.VersionData
konghaorui committed
11
import com.yidianling.common.tools.RxDeviceTool
konghaorui committed
12 13
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
14
import kotlinx.android.synthetic.main.platform_dialog_update_layout.*
konghaorui committed
15 16 17 18 19 20 21 22 23 24


/**
 * app升级
 * 兼容8.0系统
 */
class ApkUpdateDialog : Dialog{

    private var listener: ApkInstallTool.UpdateProgressListener? = null

25
    private var updateData : VersionData? = null
konghaorui committed
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

    private var activity : Activity? = null

    private var isCancleAble : Boolean = true

    private var apkIns : ApkInstallTool? = null

    private var Temp_Online_time = "2019-07-16 15:00:00" //假设是这个日期上线,为了弥补交互逗比需求

    constructor(activity: Activity?) : super(activity){
        this.activity = activity
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
41
        setContentView(R.layout.platform_dialog_update_layout)
konghaorui committed
42 43

        tv_update_content.text = updateData?.title
konghaorui committed
44 45
        tv_update_content.setMovementMethod(ScrollingMovementMethod.getInstance());

konghaorui committed
46 47
        text_version.text = "v${updateData?.ver}"
        text_desc.text = updateData?.content
konghaorui committed
48
        text_desc.setMovementMethod(ScrollingMovementMethod.getInstance());
konghaorui committed
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

        v_downpress.setSize(28,14,6,9,4)
        v_downpress.setTextSize(10)
//        v_downpress.setProgress(0)

        listener = object : ApkInstallTool.UpdateProgressListener {
            override fun startLoad() {
                Observable.just(1)
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe({
                            tv_title.text = "新版本下载中"
                            text_version.visibility = View.GONE
                            tv_bottom_desc.text = "新版本正在努力更新中,请稍等"
                            lin_progress.visibility = View.VISIBLE
                            tv_confirm.visibility = View.GONE
                            lin_content.visibility = View.GONE
                            lin_sure.visibility = View.GONE
                        },{})
            }

            override fun progress(progress: Int) {
                Observable.just(1)
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe({
                            progress_bar.progress = progress
                            v_downpress.setProgress(progress)
                        },{})
            }
        }

        apkIns = ApkInstallTool()

        tv_confirm.setOnClickListener {
            //开始下载
            if(updateData?.installLink==null)return@setOnClickListener
            apkIns?.start(activity,updateData,listener)
        }

        if ("1" == updateData?.updateFlag){
            iv_close.visibility = View.GONE
        }else{
            iv_close.setOnClickListener {
                //取消下载
                apkIns?.cancleDown()
                if (tv_confirm.visibility == View.GONE){
                    //启动后台service下载
                    SystemDownloadFileUtil.getInstances(context).setUrl(updateData?.installLink).setVersion(updateData?.ver).start()
                }
                dismiss()
            }
        }
    }

    override fun onStart() {
        super.onStart()
konghaorui committed
104
        val padding = context.resources.getDimensionPixelSize(R.dimen.platform_default_dis_size_big)
konghaorui committed
105 106 107
        window.setLayout(
                RxDeviceTool.getScreenWidth(context) - padding, ViewGroup.LayoutParams.WRAP_CONTENT
        )
konghaorui committed
108
        window.setBackgroundDrawableResource(R.color.platform_transparent)
konghaorui committed
109 110 111 112
        setCancelable(isCancleAble)
        setCanceledOnTouchOutside(false)

    }
113
    fun setData(data : VersionData?): ApkUpdateDialog {
konghaorui committed
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
        updateData = data
        return this
    }

    /**
     * 是否允许取消
     */
    fun setCancle(cancleable : Boolean): ApkUpdateDialog {
        this.isCancleAble = cancleable
        return this
    }

    override fun show() {
        if (null == activity || activity!!.isFinishing){
            return
        }
        super.show()
    }
}