Skip to content

Commit

Permalink
feat: Optimized the download dialog UI
Browse files Browse the repository at this point in the history
  • Loading branch information
cofbro committed Dec 16, 2023
1 parent 5105b55 commit 6446793
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 21 deletions.
29 changes: 12 additions & 17 deletions app/src/main/java/com/cofbro/qian/update/AutoUpdater.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.cofbro.qian.update

import android.annotation.SuppressLint
import android.app.Activity
import android.app.AlertDialog
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
Expand All @@ -11,17 +10,15 @@ import android.os.Build
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.view.LayoutInflater
import android.widget.ProgressBar
import android.widget.TextView
import androidx.core.content.FileProvider
import com.cofbro.hymvvmutils.base.getBySp
import com.cofbro.hymvvmutils.base.saveUsedSp
import com.cofbro.qian.R
import com.cofbro.qian.utils.Constants
import com.cofbro.qian.utils.parse2Long
import com.cofbro.qian.view.AutoUpdateTipDialog
import com.cofbro.qian.view.TipDialog
import com.cofbro.qian.view.DownloadDialog
import com.hjq.toast.ToastUtils
import java.io.BufferedReader
import java.io.File
Expand All @@ -44,7 +41,7 @@ class AutoUpdater(private val mContext: Context) {
private var downLoadThread: Thread? = null
private var mProgress: ProgressBar? = null
private var progress = 0f
private var txtStatus: TextView? = null
private var mTextStatus: TextView? = null
private var mHandler: DownloadHandler? = null
private val downApkWork = Runnable {
try {
Expand Down Expand Up @@ -195,7 +192,7 @@ class AutoUpdater(private val mContext: Context) {
@SuppressLint("SetTextI18n")
private fun updateDownloadProgress() {
val formattedNum = String.format("%.2f", progress)
txtStatus!!.text = "$formattedNum%"
mTextStatus!!.text = "$formattedNum%"
mProgress!!.progress = progress.toInt()
}

Expand Down Expand Up @@ -241,18 +238,16 @@ class AutoUpdater(private val mContext: Context) {
}

private fun showDownloadDialog() {
val dialog = AlertDialog.Builder(mContext)
dialog.setTitle("软件版本更新")
val inflater = LayoutInflater.from(mContext)
val v = inflater.inflate(R.layout.dialog_download, null)
mProgress = v.findViewById(R.id.progressBar)
txtStatus = v.findViewById(R.id.txtStatus)
dialog.setCancelable(false)
dialog.setView(v)
dialog.setNegativeButton("取消") { _, _ ->
intercept = true
DownloadDialog(mContext).apply {
setOnNegativeButtonListener {
intercept = true
dismiss()
}
setCancelable(false)
show()
mProgress = progress
mTextStatus = textStatus
}
dialog.show()
downloadApk()
}

Expand Down
43 changes: 43 additions & 0 deletions app/src/main/java/com/cofbro/qian/view/DownloadDialog.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.cofbro.qian.view

import android.app.AlertDialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View
import android.widget.ProgressBar
import android.widget.TextView
import com.cofbro.qian.R

class DownloadDialog(context: Context) : AlertDialog(context) {
var progress: ProgressBar? = null
var textStatus: TextView? = null
private var tvCancel: TextView? = null
private var negativeClick: ((View) -> Unit)? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.dialog_download)
val layoutParams = window?.attributes
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
layoutParams?.width = context.resources.displayMetrics.widthPixels - 200
window?.attributes = layoutParams

initView()

tvCancel?.setOnClickListener {
negativeClick?.invoke(it)
}

}

fun setOnNegativeButtonListener(listener: (View) -> Unit) {
negativeClick = listener
}

private fun initView() {
progress = findViewById(R.id.progressBar)
tvCancel = findViewById(R.id.tv_download_cancel)
textStatus = findViewById(R.id.txtStatus)
}
}
18 changes: 18 additions & 0 deletions app/src/main/res/layout/page/drawable/update_progress_bar_bg.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<corners android:radius="4dp" />
<solid android:color="#ECECEC" />
</shape>
</item>

<item>
<clip android:clipOrientation="horizontal">
<shape>
<corners android:radius="4dp" />
<solid android:color="@color/appColor" />
</shape>
</clip>
</item>
</layer-list>
54 changes: 50 additions & 4 deletions app/src/main/res/layout/page/layout/dialog_download.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,46 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:background="@drawable/app_white_small_radius_bg">


<TextView
android:id="@+id/textView20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="软件版本更新"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/textView25"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="更新详情可在检查更新中查看"
android:textColor="@color/black"
app:layout_constraintStart_toStartOf="@+id/textView20"
app:layout_constraintTop_toBottomOf="@+id/textView20" />

<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="6dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:progressDrawable="@drawable/update_progress_bar_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@+id/textView25" />

<TextView
android:id="@+id/txtStatus"
Expand All @@ -26,4 +52,24 @@
android:text="0%"
app:layout_constraintEnd_toEndOf="@+id/progressBar"
app:layout_constraintTop_toBottomOf="@+id/progressBar" />

<TextView
android:id="@+id/tv_download_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="16dp"
android:background="@drawable/app_comm_radius_bg"
android:paddingStart="14dp"
android:paddingTop="3dp"
android:paddingEnd="14dp"
android:paddingBottom="3dp"
android:text="取消"
android:letterSpacing="0.1"
android:textSize="12sp"
android:textStyle="bold"
android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/txtStatus"
app:layout_constraintTop_toBottomOf="@+id/txtStatus" />
</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit 6446793

Please sign in to comment.