Browse Source

1.添加app升级弹窗

王鹏鹏 2 years ago
parent
commit
ff23051f8f

+ 3 - 0
.idea/misc.xml

@@ -35,6 +35,7 @@
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_buttom_game.xml" value="0.219" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_check_button.xml" value="0.2185" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_data_content.xml" value="0.2185" />
+        <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_down_load_app.xml" value="0.219" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_fun_time.xml" value="0.2185" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_game_current_level.xml" value="0.2185" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_game_total_level.xml" value="0.2185" />
@@ -50,8 +51,10 @@
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_play_porpoise.xml" value="0.2185" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_professional_evaluation.xml" value="0.2185" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_train.xml" value="0.2185" />
+        <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/bg_upgrade_button.xml" value="0.219" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/drawable/shape_ract_gold.xml" value="0.2185" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/layout/activity_home.xml" value="0.2" />
+        <entry key="..\:/workspace/hcp-pad/home/src/main/res/layout/fragment_down_load_app.xml" value="0.2" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/layout/item_game.xml" value="0.16" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/layout/layout_fun_time.xml" value="0.1" />
         <entry key="..\:/workspace/hcp-pad/home/src/main/res/layout/layout_play_with_blue_porpoise.xml" value="0.136" />

+ 4 - 2
home/src/main/java/com/yingyangfly/home/activity/HomeActivity.kt

@@ -26,6 +26,7 @@ import com.yingyangfly.home.component.ShowFunTimeViewComponent
 import com.yingyangfly.home.component.ShowHealthCounselingViewComponent
 import com.yingyangfly.home.component.ShowPlayPorpoiseViewComponent
 import com.yingyangfly.home.component.ShowProfessionalEvaluationViewComponent
+import com.yingyangfly.home.dialog.DownlaodAppFragment
 import com.yingyangfly.home.entity.HomePageMsgBean
 import com.yingyangfly.home.entity.Record
 import com.yingyangfly.home.net.XHomeServiceFactory
@@ -182,8 +183,9 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
             launchTask()
         }, success = {
             if (it != null) {
-                val appUpdater = AppUpdater(this, it.versionUrl)
-                appUpdater.start()
+                val downlaodAppFragment = DownlaodAppFragment()
+                downlaodAppFragment.setDownloadUrl(mContext, it.versionUrl)
+                downlaodAppFragment.show(supportFragmentManager, "downlaodAppFragment")
             } else {
                 launchTask()
             }

+ 146 - 0
home/src/main/java/com/yingyangfly/home/dialog/DownlaodAppFragment.kt

@@ -0,0 +1,146 @@
+package com.yingyangfly.home.dialog
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.MotionEvent
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ProgressBar
+import androidx.appcompat.widget.AppCompatButton
+import androidx.appcompat.widget.AppCompatTextView
+import androidx.fragment.app.DialogFragment
+import com.gyf.immersionbar.BarHide
+import com.gyf.immersionbar.ktx.immersionBar
+import com.yingyang.home.R
+import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.show
+import com.yingyangfly.baselib.ext.toast
+import com.yingyangfly.baselib.utils.ViewTool
+import com.yingyangfly.home.updater.AppUpdater
+import com.yingyangfly.home.updater.UpdateConfig
+import com.yingyangfly.home.updater.callback.UpdateCallback
+import com.yingyangfly.home.updater.http.OkHttpManager
+import java.io.File
+
+/**
+ * App升级弹窗
+ */
+class DownlaodAppFragment : DialogFragment(), View.OnTouchListener {
+
+    private var upgradeBtn: AppCompatButton? = null
+    private var progressBar: ProgressBar? = null
+    private var tvProgress: AppCompatTextView? = null
+
+    private var content: Context? = null
+    private var url: String = ""
+
+    fun setDownloadUrl(content: Context, url: String) {
+        this.content = content
+        this.url = url
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        isCancelable = false
+        dialog?.setCanceledOnTouchOutside(true)
+    }
+
+    override fun onStart() {
+        super.onStart()
+        dialog?.window?.setLayout(
+            ViewGroup.LayoutParams.MATCH_PARENT,
+            ViewGroup.LayoutParams.MATCH_PARENT
+        )
+        dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        immersionBar {
+            hideBar(BarHide.FLAG_HIDE_BAR)
+            navigationBarColor(R.color.transparent)
+        }
+        val rootView = ViewTool.inflateFragmentPixels(
+            activity, R.layout.fragment_down_load_app, container, 1194, 834
+        )
+        findId(rootView)
+        init()
+        return rootView
+    }
+
+    private fun findId(rootView: View) {
+        upgradeBtn = rootView.findViewById(R.id.upgradeBtn)
+        tvProgress = rootView.findViewById(R.id.tvProgress)
+        progressBar = rootView.findViewById(R.id.progressBar)
+    }
+
+    private fun init() {
+        upgradeBtn?.setOnSingleClickListener {
+            if (content != null) {
+                val config = UpdateConfig()
+                config.url = url
+                val appUpdater = AppUpdater(content!!, config)
+                    .setHttpManager(OkHttpManager.getInstance())
+                    .setUpdateCallback(object : UpdateCallback {
+                        override fun onDownloading(isDownloading: Boolean) {
+                            if (isDownloading) {
+                                "已经在下载中,请勿重复下载".toast()
+                            } else {
+                                upgradeBtn?.show(false)
+                                tvProgress?.show(true)
+                                progressBar?.show(true)
+                            }
+                        }
+
+                        override fun onStart(url: String?) {
+
+                        }
+
+                        @SuppressLint("SetTextI18n")
+                        override fun onProgress(progress: Long, total: Long, isChanged: Boolean) {
+                            if (isChanged) {
+                                if (progress > 0) {
+                                    val currProgress = (progress * 1.0f / total * 100.0f).toInt()
+                                    tvProgress?.text =
+                                        getString(R.string.app_updater_progress_notification_content) + currProgress + "%"
+                                    progressBar!!.progress = currProgress
+                                } else {
+                                    tvProgress?.text =
+                                        getString(R.string.app_updater_start_notification_content)
+                                }
+                            }
+                        }
+
+                        override fun onFinish(file: File?) {
+                            dismiss()
+                            "下载完成".toast()
+                        }
+
+                        override fun onError(e: Exception?) {
+                            dismiss()
+                            "下载失败".toast()
+                        }
+
+                        override fun onCancel() {
+                            dismiss()
+                            "取消下载".toast()
+                        }
+                    })
+                appUpdater.start()
+            }
+        }
+    }
+
+    override fun onTouch(v: View?, event: MotionEvent?): Boolean {
+        if (isCancelable && dialog?.isShowing == true) {
+            dismiss()
+            return true
+        }
+        return false
+    }
+}

+ 7 - 0
home/src/main/res/drawable/bg_down_load_app.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_28px" />
+    <solid android:color="@android:color/white" />
+</shape>

+ 18 - 0
home/src/main/res/drawable/bg_upgrade_button.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+
+    <item>
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/divider_32px" />
+            <gradient
+                android:angle="180"
+                android:endColor="@color/color_FF4174FF"
+                android:startColor="@color/color_FF6D9AFF"
+                android:type="linear"
+                android:useLevel="true" />
+        </shape>
+    </item>
+
+</layer-list>

+ 76 - 0
home/src/main/res/layout/fragment_down_load_app.xml

@@ -0,0 +1,76 @@
+<?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"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/transparent"
+    tools:ignore="ResourceName">
+
+    <LinearLayout
+        android:layout_width="@dimen/divider_416px"
+        android:layout_height="match_parent"
+        android:layout_marginTop="@dimen/divider_180px"
+        android:layout_marginBottom="@dimen/divider_180px"
+        android:background="@drawable/bg_down_load_app"
+        android:gravity="center_horizontal"
+        android:orientation="vertical"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <androidx.appcompat.widget.AppCompatImageView
+            android:layout_width="@dimen/divider_224px"
+            android:layout_height="@dimen/divider_224px"
+            android:layout_marginTop="@dimen/divider_28px"
+            android:background="@mipmap/icon_dolphin"
+            android:scaleType="centerInside" />
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/divider_30px"
+            android:gravity="center"
+            android:text="@string/upgrade_reminder"
+            android:textColor="@color/color_FF333333"
+            android:textSize="@dimen/divider_28px" />
+
+        <androidx.appcompat.widget.AppCompatButton
+            android:id="@+id/upgradeBtn"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/divider_64px"
+            android:layout_marginStart="@dimen/divider_61px"
+            android:layout_marginTop="@dimen/divider_30px"
+            android:layout_marginEnd="@dimen/divider_61px"
+            android:background="@drawable/bg_upgrade_button"
+            android:gravity="center"
+            android:text="@string/upgrade_now"
+            android:textColor="@android:color/white"
+            android:textSize="@dimen/divider_32px" />
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvProgress"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginStart="@dimen/divider_61px"
+            android:layout_marginTop="@dimen/divider_30px"
+            android:text="@string/app_updater_start_notification_content"
+            android:textColor="@color/color_4A76FF"
+            android:textSize="@dimen/divider_26px"
+            android:visibility="gone" />
+
+        <ProgressBar
+            android:id="@+id/progressBar"
+            style="@style/Widget.AppCompat.ProgressBar.Horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/divider_12px"
+            android:layout_marginStart="@dimen/divider_61px"
+            android:layout_marginTop="@dimen/divider_5px"
+            android:layout_marginEnd="@dimen/divider_61px"
+            android:max="100"
+            android:visibility="gone" />
+
+    </LinearLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

BIN
home/src/main/res/mipmap-xxhdpi/icon_dolphin.png


+ 2 - 0
home/src/main/res/values/colors.xml

@@ -65,4 +65,6 @@
     <color name="color_4A76FF" tools:ignore="ResourceName">#4A76FF</color>
     <color name="color_CCFFFFFF" tools:ignore="ResourceName">#CCFFFFFF</color>
     <color name="color_FF92ACFF" tools:ignore="ResourceName">#FF92ACFF</color>
+    <color name="color_FF4174FF" tools:ignore="ResourceName">#FF4174FF</color>
+    <color name="color_FF6D9AFF" tools:ignore="ResourceName">#FF6D9AFF</color>
 </resources>

+ 2 - 0
home/src/main/res/values/dimens.xml

@@ -8,6 +8,7 @@
     <dimen name="divider_533px" tools:ignore="ResourceName">533px</dimen>
     <dimen name="divider_525px" tools:ignore="ResourceName">525px</dimen>
     <dimen name="divider_503px" tools:ignore="ResourceName">503px</dimen>
+    <dimen name="divider_472px" tools:ignore="ResourceName">472px</dimen>
     <dimen name="divider_443px" tools:ignore="ResourceName">443px</dimen>
     <dimen name="divider_440px" tools:ignore="ResourceName">440px</dimen>
     <dimen name="divider_432px" tools:ignore="ResourceName">432px</dimen>
@@ -49,6 +50,7 @@
     <dimen name="divider_234px" tools:ignore="ResourceName">234px</dimen>
     <dimen name="divider_230px" tools:ignore="ResourceName">230px</dimen>
     <dimen name="divider_229px" tools:ignore="ResourceName">229px</dimen>
+    <dimen name="divider_224px" tools:ignore="ResourceName">224px</dimen>
     <dimen name="divider_214px" tools:ignore="ResourceName">214px</dimen>
     <dimen name="divider_213px" tools:ignore="ResourceName">213px</dimen>
     <dimen name="divider_203px" tools:ignore="ResourceName">203px</dimen>

+ 2 - 0
home/src/main/res/values/strings.xml

@@ -33,4 +33,6 @@
     <string name="app_updater_error_notification_title" tools:ignore="ResourceName">下载失败</string>
     <string name="app_updater_error_notification_content" tools:ignore="ResourceName">点击关闭通知</string>
     <string name="app_updater_error_notification_content_re_download" tools:ignore="ResourceName">点击重新下载</string>
+    <string name="upgrade_reminder" tools:ignore="ResourceName">小豚提醒您升级更好用的新版本,快来更新吧</string>
+    <string name="upgrade_now" tools:ignore="ResourceName">立即升级</string>
 </resources>