1、使用超级轮子:
//自动安装 支持androidx https://github.com/jenly1314/AppUpdater
implementation 'com.github.jenly1314.AppUpdater:app-updater:1.1.0'
方法调用:
//下载、进度监听并自动启用安装
AppUpdater appUpdater = new AppUpdater(AppUtils.getCurApplication(), apkUrl);
appUpdater.setUpdateCallback(new AppUpdateCallback() {
@Override
public void onProgress(long download, long total, boolean isChange) {
Float progress = (new Float(download) / new Float(total)) * 100F;
binding.setDownloadProgress(progress < 1 ? 1 : progress);
binding.setProgressText(String.format("%.02f%%", progress));
}
@Override
public void onFinish(File file) {
binding.setDownloadProgress(100F);
binding.setProgressText("100%");
binding.setHasDownload(true);
dismiss();
}
@Override
public void onError(Exception e) {
super.onError(e);
Toast.makeText(requireContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
});
appUpdater.start();
2、设置系统进度条样式
2.1 先看效果
截屏2021-09-30 下午6.27.37.png
2.2 后上xml代码
系统progressBar
<ProgressBar
android:id="@+id/v_progress"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_marginHorizontal="25dp"
android:layout_marginTop="35dp"
android:layout_height="5dp"
android:max="100"
android:progress="@{downloadProgress.intValue()}"
android:progressDrawable="@drawable/download_progress_bg"
android:visible="@{(downloadProgress > 0F && downloadProgress < 100F) ? true : false}"
tools:visibility="visible"
tools:progress="50"
/>
//这里用了一个自定义binding标签 android:visible ,没有的话用visibility
download_progress_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 背景 gradient是渐变,corners定义的是圆角 -->
<item android:id="@android:id/background"
android:layout_width="wrap_content">
<shape>
<corners android:radius="5dp" />
<solid android:color="#B1D5FF" />
</shape>
</item>
<!-- 进度条 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="5dp" />
<solid android:color="#4083FF" />
</shape>
</clip>
</item>
</layer-list>
网友评论