Skip to content

Commit

Permalink
#update UpgradeDialog
Browse files Browse the repository at this point in the history
  • Loading branch information
wumeng1 authored and wumeng1 committed Jul 22, 2021
1 parent 85f939f commit 3d0db81
Show file tree
Hide file tree
Showing 7 changed files with 158 additions and 66 deletions.
7 changes: 3 additions & 4 deletions app/src/main/java/com/mirkowu/mvm/mvvm/ImageAdapter.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package com.mirkowu.mvm.mvvm;

import android.view.LayoutInflater;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.mirkowu.lib_widget.adapter.BaseRVAdapter;
import com.mirkowu.lib_image.ImageLoader;
import com.mirkowu.lib_widget.adapter.BaseRVAdapter;
import com.mirkowu.mvm.R;
import com.mirkowu.mvm.bean.GankImageBean;
import com.mirkowu.mvm.databinding.ItemGankImageBinding;
Expand All @@ -28,8 +27,8 @@ public void onBindHolder(@NonNull Holder holder, GankImageBean item, int positio

@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new Holder(ItemGankImageBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
public Holder onCreateHolder(@NonNull ViewGroup parent, int viewType) {
return new Holder(ItemGankImageBinding.inflate(mLayoutInflater, parent, false));
}

class Holder extends RecyclerView.ViewHolder {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.mirkowu.mvm.recycelerview

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.mirkowu.lib_widget.adapter.BaseRVAdapter
Expand All @@ -11,8 +10,8 @@ class GridAdapter : BaseRVAdapter<String, GridAdapter.Holder>() {

}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
return Holder(ItemBindingListBinding.inflate(LayoutInflater.from(parent.context), parent, false))
override fun onCreateHolder(parent: ViewGroup, viewType: Int): Holder {
return Holder(ItemBindingListBinding.inflate(mLayoutInflater, parent, false))
}

override fun onBindHolder(holder: Holder, item: String?, position: Int) {
Expand Down
145 changes: 110 additions & 35 deletions lib_bugly/src/main/java/com/mirkowu/lib_bugly/UpgradeDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,22 @@

import androidx.fragment.app.FragmentManager;

import com.mirkowu.lib_util.LogUtil;
import com.mirkowu.lib_util.PermissionsUtil;
import com.mirkowu.lib_util.utilcode.util.ToastUtils;
import com.mirkowu.lib_widget.dialog.BaseDialog;
import com.tencent.bugly.beta.UpgradeInfo;
import com.tencent.bugly.beta.download.DownloadListener;
import com.tencent.bugly.beta.download.DownloadTask;
import com.tencent.bugly.beta.upgrade.UpgradeStateListener;

import static android.view.View.GONE;
import static android.view.View.VISIBLE;

/**
* Bugly 升级版本SDK
*/
public class UpgradeDialog extends BaseDialog implements DownloadListener, UpgradeStateListener {
public class UpgradeDialog extends BaseDialog implements DownloadListener, UpgradeStateListener, View.OnClickListener {
protected static final int DEFAULT_WIDTH = 280; //默认宽度 dp

TextView tvTitle;
Expand All @@ -29,6 +35,7 @@ public class UpgradeDialog extends BaseDialog implements DownloadListener, Upgra
RelativeLayout llProgress;
LinearLayout llButton;

protected OnButtonClickListener listener;
private UpgradeInfo upgradeInfo;
private boolean isForceUpgrade;

Expand Down Expand Up @@ -60,12 +67,7 @@ protected void convertView(ViewHolder viewHolder, BaseDialog baseDialog) {
tvPositive = viewHolder.getView(R.id.tvPositive);
llButton = viewHolder.getView(R.id.llButton);

tvPositive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startTask();
}
});
tvPositive.setOnClickListener(this);

if (upgradeInfo == null) {
dismissAllowingStateLoss();
Expand All @@ -74,35 +76,29 @@ public void onClick(View v) {

tvTitle.setText(upgradeInfo.title);
tvContent.setText(upgradeInfo.newFeature);
isForceUpgrade = upgradeInfo.upgradeType == 2;

initButtonText();


UpgradeManager.registerDownloadListener(this);
UpgradeManager.setUpgradeStateListener(this);
}

private void initButtonText() {
if (isForceUpgrade = upgradeInfo.upgradeType == 2) { //强制
tvNegative.setVisibility(View.GONE);
} else {
tvNegative.setVisibility(View.VISIBLE);
tvNegative.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismissAllowingStateLoss();
}
});
tvNegative.setOnClickListener(this);
}

UpgradeManager.registerDownloadListener(this);
UpgradeManager.setUpgradeStateListener(this);
}
tvNegative.setVisibility(isForceUpgrade ? GONE : VISIBLE);
tvNegative.setText(com.mirkowu.lib_upgrade.R.string.up_next_time);
tvPositive.setVisibility(VISIBLE);
tvPositive.setText(com.mirkowu.lib_upgrade.R.string.up_upgrade);

private void startTask() {
llButton.setVisibility(View.GONE);
llProgress.setVisibility(View.VISIBLE);
// tvNegative.setText(R.string.up_cancel);
// tvNegative.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// BuglyManager.cancelDownload();
// dismissAllowingStateLoss();
// }
// });
UpgradeManager.startDownloadTask();
llProgress.setVisibility(View.GONE);
}

@Override
Expand All @@ -117,39 +113,99 @@ public void onStart() {
// }
}

@Override
public void onResume() {
super.onResume();
initButtonText();
}

@Override
public void onClick(View v) {
int i = v.getId();
if (i == R.id.tvPositive) {
if (listener != null) {
listener.onButtonClick(this, true);
}
if (PermissionsUtil.hasPermissions(getContext(), PermissionsUtil.GROUP_STORAGE)) {
startDownloadTask();
} else {
LogUtil.e("没有存储权限");
if (listener != null) {
listener.onNeedPermission(this);
} else {
LogUtil.e("下载到默认路径");
startDownloadTask();
}
}
} else if (i == R.id.tvNegative) {
if (listener != null) {
listener.onButtonClick(this, true);
}
UpgradeManager.cancelDownload();
dismissAllowingStateLoss();
}
}


private void startDownloadTask() {
llProgress.setVisibility(VISIBLE);
tvPositive.setVisibility(GONE);
tvNegative.setVisibility(VISIBLE);

if (isForceUpgrade) {
tvNegative.setText(com.mirkowu.lib_upgrade.R.string.up_downloading);
tvNegative.setEnabled(false);
} else {
tvNegative.setText(com.mirkowu.lib_upgrade.R.string.up_cancel);
tvNegative.setEnabled(true);
}

UpgradeManager.startDownloadTask();
}


@Override
public void onReceive(DownloadTask downloadTask) {
if (!isAdded() || isDetached()) return;
int progress = (int) (downloadTask.getSavedLength() * 100f / downloadTask.getTotalLength());
llProgress.setVisibility(VISIBLE);
tvProgress.setText(String.format("%d%%", progress));
mProgressBar.setProgress(progress);
}

@Override
public void onCompleted(DownloadTask downloadTask) {
if (!isForceUpgrade) {
dismissAllowingStateLoss();
} else {
if (!isAdded() || isDetached()) return;
if (isForceUpgrade) {
llButton.setVisibility(View.VISIBLE);
tvNegative.setVisibility(View.GONE);
tvPositive.setVisibility(View.VISIBLE);
llProgress.setVisibility(View.GONE);

tvNegative.setVisibility(GONE);
tvNegative.setEnabled(true);
tvPositive.setVisibility(VISIBLE);
tvPositive.setText(com.mirkowu.lib_upgrade.R.string.up_click_install);
} else {
dismissAllowingStateLoss();
}
}

@Override
public void onFailed(DownloadTask downloadTask, int i, String s) {
ToastUtils.showShort(R.string.strNotificationDownloadError);
dismissAllowingStateLoss();
}

@Override
public void onDestroyView() {
super.onDestroyView();
UpgradeManager.unregisterDownloadListener();
UpgradeManager.cancelDownload();
super.onDestroyView();
}

@Override
public void onUpgradeFailed(boolean b) {

}

@Override
Expand All @@ -158,15 +214,34 @@ public void onUpgradeSuccess(boolean b) {

@Override
public void onUpgradeNoVersion(boolean b) {

}

@Override
public void onUpgrading(boolean b) {

}

@Override
public void onDownloadCompleted(boolean b) {
}


public UpgradeDialog setOnButtonClickListener(UpgradeDialog.OnButtonClickListener listener) {
this.listener = listener;
return this;
}

public interface OnButtonClickListener {

void onNeedPermission(UpgradeDialog dialog);

/**
* 当窗口按钮被点击
*
* @param dialog
* @param isPositiveClick true :PositiveButton点击, false :NegativeButton点击
* @return 是否
*/
default void onButtonClick(UpgradeDialog dialog, boolean isPositiveClick) {
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ protected void convertView(ViewHolder viewHolder, BaseDialog baseDialog) {
tvNegative.setOnClickListener(this);
ivIcon.setVisibility(GONE);


if (TextUtils.isEmpty(upgradeInfo.getTitle())) {
tvTitle.setText(R.string.up_check_new_version);
} else {
Expand All @@ -96,9 +95,9 @@ protected void convertView(ViewHolder viewHolder, BaseDialog baseDialog) {
HtmlUtil.setTextViewHtml(tvContent, upgradeInfo.getContent()); //支持html

tvNegative.setVisibility(upgradeInfo.isForceUpgrade() == 1 ? GONE : VISIBLE);
tvNegative.setText(R.string.up_next_time);
tvPositive.setVisibility(VISIBLE);
tvPositive.setText(R.string.up_upgrade);
tvNegative.setText(R.string.up_next_time);
}

@Override
Expand All @@ -124,14 +123,14 @@ public void onClick(View v) {
IntentUtil.startInstall(getContext(), apkFile);
} else {
if (PermissionsUtil.hasPermissions(getContext(), PermissionsUtil.GROUP_STORAGE)) {
downloadApk();
startDownloadTask();
} else {
LogUtil.e("没有存储权限");
if (listener != null) {
listener.onNeedPermission(this);
} else {
LogUtil.e("下载到默认路径");
downloadApk();
startDownloadTask();
}
}
}
Expand Down Expand Up @@ -168,16 +167,16 @@ default void onButtonClick(UpgradeDialog dialog, boolean isPositiveClick) {
}
}

public void downloadApk() {
public void startDownloadTask() {
llProgress.setVisibility(VISIBLE);
tvPositive.setVisibility(GONE);
tvNegative.setVisibility(VISIBLE);
if (upgradeInfo.isForceUpgrade() != 1) {
tvNegative.setText(R.string.up_cancel);
tvNegative.setEnabled(true);
} else {
if (upgradeInfo.isForceUpgrade() == 1) {
tvNegative.setText(R.string.up_downloading);
tvNegative.setEnabled(false);
} else {
tvNegative.setText(R.string.up_cancel);
tvNegative.setEnabled(true);
}

if (TextUtils.isEmpty(upgradeInfo.getApkUrl())) {
Expand Down Expand Up @@ -205,6 +204,7 @@ protected void startTask(String path) {
.setListener(new FileDownloadSampleListener() {
@Override
protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
if (!isAdded() || isDetached()) return;
int progress = (int) ((soFarBytes * 100.0) / totalBytes);
tvProgress.setText(String.format("%d%%", progress));
mProgressBar.setProgress(progress);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.mirkowu.lib_widget.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
Expand All @@ -14,6 +17,8 @@

public abstract class BaseRVAdapter<T, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> {
private List<T> mData = new ArrayList<>();
protected Context mContext;
protected LayoutInflater mLayoutInflater;

public BaseRVAdapter() {
}
Expand Down Expand Up @@ -173,6 +178,16 @@ public int getItemCount() {
return this.mData.size();
}

@NonNull
@Override
public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mContext = parent.getContext();
mLayoutInflater = LayoutInflater.from(mContext);
return onCreateHolder(parent, viewType);
}

@NonNull
public abstract VH onCreateHolder(@NonNull ViewGroup parent, int viewType);

@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
Expand Down
Loading

0 comments on commit 3d0db81

Please sign in to comment.