diff --git a/app/src/main/java/com/gh/common/util/SpeedUtils.java b/app/src/main/java/com/gh/common/util/SpeedUtils.java
index 4bbfa61b79..787145e624 100644
--- a/app/src/main/java/com/gh/common/util/SpeedUtils.java
+++ b/app/src/main/java/com/gh/common/util/SpeedUtils.java
@@ -35,4 +35,19 @@ public class SpeedUtils {
}
}
+ public static String getRemainSecondTime(long totalSize, long currentSize, long speed) {
+ long remainSize = totalSize - currentSize;
+ long remainTime;
+ if (speed != 0) {
+ remainTime = remainSize / speed;
+ } else {
+ return "-s";
+ }
+ int hour = (int) (remainTime / 3600);
+ remainTime = (remainTime - hour * 3660);
+ int minute = (int) (remainTime / 60);
+ int second = (int) (remainTime - minute * 60);
+ return second + "s";
+ }
+
}
diff --git a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java
index 5f2a236c93..751275767d 100644
--- a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java
+++ b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java
@@ -8,12 +8,16 @@ import android.os.Message;
import android.preference.PreferenceManager;
import android.text.Html;
import android.view.View;
+import android.view.ViewGroup;
import android.view.Window;
import android.widget.ProgressBar;
import android.widget.TextView;
+import androidx.constraintlayout.widget.ConstraintLayout;
+
import com.gh.common.util.DataLogUtils;
import com.gh.common.util.DialogUtils;
+import com.gh.common.util.DisplayUtils;
import com.gh.common.util.MD5Utils;
import com.gh.common.util.MtaHelper;
import com.gh.common.util.NetworkUtils;
@@ -33,6 +37,7 @@ import com.lightgame.utils.AppManager;
import com.lightgame.utils.Utils;
import java.io.File;
+import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
@@ -62,8 +67,11 @@ public class UpdateManager {
private Dialog loadingDialog;
private ProgressBar app_pb_progress;
- private TextView app_tv_speed;
- private TextView app_tv_percent;
+ private TextView appProgressSize;
+ private TextView appProgressRemain;
+ private TextView appProgressPercent;
+ private View appProgressFilling;
+ private View appProgressAnchor;
private boolean isShowDownload;
private boolean isChecking;
@@ -72,12 +80,26 @@ public class UpdateManager {
@Override
public void onDataChanged(DownloadEntity downloadEntity) {
if (downloadEntity.getName().contains("光环助手") && isShowDownload) {
- app_tv_speed.setText(String.format("%s(剩%s)", SpeedUtils.getSpeed(downloadEntity.getSpeed()),
- SpeedUtils.getRemainTime(downloadEntity.getSize(),
- downloadEntity.getProgress(), downloadEntity.getSpeed() * 1024)));
+ float size = (((float) downloadEntity.getProgress() / 1024) / 1024);
+ DecimalFormat df = new DecimalFormat("0.00");
+ appProgressSize.setText((df.format(size) + "Mb"));
+ appProgressRemain.setText(String.format("剩余%s", SpeedUtils.getRemainSecondTime(downloadEntity.getSize(),
+ downloadEntity.getProgress(), downloadEntity.getSpeed() * 1024)));
app_pb_progress.setProgress((int) (downloadEntity.getPercent() * 10));
- app_tv_percent.setText(String.format(
- Locale.getDefault(), "%s%%", String.valueOf(downloadEntity.getPercent())));
+
+ int width = app_pb_progress.getWidth();
+ int marLeft = (int) (downloadEntity.getPercent() / 100 * width);
+ ViewGroup.LayoutParams anchorLp = appProgressAnchor.getLayoutParams();
+ if (anchorLp instanceof ConstraintLayout.LayoutParams) {
+ ((ConstraintLayout.LayoutParams) anchorLp).leftMargin = marLeft;
+ appProgressAnchor.setLayoutParams(anchorLp);
+ }
+
+ ViewGroup.LayoutParams fillingLp = appProgressFilling.getLayoutParams();
+ fillingLp.width = marLeft + DisplayUtils.dip2px(5);
+ appProgressFilling.setLayoutParams(fillingLp);
+
+ appProgressPercent.setText(((int) downloadEntity.getPercent() + "%"));
if (DownloadStatus.done.equals(downloadEntity.getStatus())) {
DownloadManager.getInstance(mContext).cancel(downloadEntity.getUrl(), false, true);
if (downloadDialog != null) {
@@ -125,6 +147,7 @@ public class UpdateManager {
RetrofitManager.getInstance(mContext).getApi().getUpdate(PackageUtils.getVersionName(), PackageUtils.getVersionCode(), channel)
.map(appEntity -> {
boolean isShowUpdateDialog = false;
+ appEntity.setUrl("https://down-and.ghzs.com?id=5daec8658781ed03262745c5&platform=bili");
if (appEntity.getVersionCode() > PackageUtils.getVersionCode()) {
// 助手有更新
UpdateManager.this.appEntity = appEntity;
@@ -268,12 +291,19 @@ public class UpdateManager {
}
downloadDialog = new Dialog(mContext);
+ Window window = downloadDialog.getWindow();
+ if (window != null) {
+ window.setBackgroundDrawableResource(android.R.color.transparent);
+ }
View view = View.inflate(mContext, R.layout.app_updating_dialog, null);
- app_pb_progress = view.findViewById(R.id.app_pb_progress);
- app_tv_speed = view.findViewById(R.id.app_tv_speed);
- app_tv_percent = view.findViewById(R.id.app_tv_percent);
+ app_pb_progress = view.findViewById(R.id.progress);
+ appProgressSize = view.findViewById(R.id.size);
+ appProgressRemain = view.findViewById(R.id.remain);
+ appProgressAnchor = view.findViewById(R.id.progress_anchor);
+ appProgressPercent = view.findViewById(R.id.percent);
+ appProgressFilling = view.findViewById(R.id.progress_filling);
view.findViewById(R.id.app_tv_cancel).setOnClickListener(v -> {
DownloadManager.getInstance(mContext).cancel(appEntity.getUrl());
@@ -289,11 +319,12 @@ public class UpdateManager {
isShowDownload = false;
});
+ int dialogWidth = mContext.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(60);
downloadDialog.setCanceledOnTouchOutside(false);
downloadDialog.setCancelable(false);
downloadDialog.closeOptionsMenu();
downloadDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- downloadDialog.setContentView(view);
+ downloadDialog.setContentView(view, new ViewGroup.LayoutParams(dialogWidth, ViewGroup.LayoutParams.WRAP_CONTENT));
downloadDialog.show();
isShowDownload = true;
diff --git a/app/src/main/res/drawable-xxhdpi/app_updating_cancel.png b/app/src/main/res/drawable-xxhdpi/app_updating_cancel.png
new file mode 100644
index 0000000000..b100927d00
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/app_updating_cancel.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/app_updating_percent_bg.png b/app/src/main/res/drawable-xxhdpi/app_updating_percent_bg.png
new file mode 100644
index 0000000000..a1c25fb085
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/app_updating_percent_bg.png differ
diff --git a/app/src/main/res/drawable/app_updating_progress_anchor.xml b/app/src/main/res/drawable/app_updating_progress_anchor.xml
new file mode 100644
index 0000000000..6c466957d3
--- /dev/null
+++ b/app/src/main/res/drawable/app_updating_progress_anchor.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/app_updating_progress_filling.xml b/app/src/main/res/drawable/app_updating_progress_filling.xml
new file mode 100644
index 0000000000..b28eb21ec0
--- /dev/null
+++ b/app/src/main/res/drawable/app_updating_progress_filling.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/app_updating_progress_style.xml b/app/src/main/res/drawable/app_updating_progress_style.xml
new file mode 100644
index 0000000000..9ff2c78870
--- /dev/null
+++ b/app/src/main/res/drawable/app_updating_progress_style.xml
@@ -0,0 +1,26 @@
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/dialog_app_updating_bg.xml b/app/src/main/res/drawable/dialog_app_updating_bg.xml
new file mode 100644
index 0000000000..3038d69a9a
--- /dev/null
+++ b/app/src/main/res/drawable/dialog_app_updating_bg.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/app_updating_dialog.xml b/app/src/main/res/layout/app_updating_dialog.xml
index b9ff0fafb3..07d26e24f8 100644
--- a/app/src/main/res/layout/app_updating_dialog.xml
+++ b/app/src/main/res/layout/app_updating_dialog.xml
@@ -1,78 +1,110 @@
-
+
+ android:id="@+id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="32dp"
+ android:layout_marginBottom="10dp"
+ android:text="@string/dialog_updating"
+ android:textColor="@color/text_333333"
+ android:textSize="16sp"
+ android:textStyle="bold"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintRight_toRightOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ android:id="@+id/progress"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:layout_width="match_parent"
+ android:layout_height="6dp"
+ android:layout_marginLeft="24dp"
+ android:layout_marginTop="60dp"
+ android:layout_marginRight="24dp"
+ android:max="1000"
+ android:progress="0"
+ android:progressDrawable="@drawable/app_updating_progress_style"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintRight_toRightOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/title" />
-
-
-
-
-
+
+ android:id="@+id/percent"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="4dp"
+ android:background="@drawable/app_updating_percent_bg"
+ android:gravity="center_horizontal"
+ android:paddingTop="2dp"
+ android:textColor="@color/white"
+ android:textSize="12sp"
+ app:layout_constraintBottom_toTopOf="@id/progress_anchor"
+ app:layout_constraintLeft_toLeftOf="@id/progress_anchor"
+ app:layout_constraintRight_toRightOf="@id/progress_anchor"
+ tools:text="18%" />
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5b46114cba..080a22f99b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -196,7 +196,7 @@
1、首页改造
暂不更新
立即更新
- 正在更新
+ 正在为您更新,请耐心等待
0K/s
0.0%
取消