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% 取消