在popupwindow中使用
例子
public class DownloadPopupWindow extends AbsPopupWindow implements View.OnClickListener {
private HorizontalProgressBarWithNumber mPb;
private Button mStart;
private Button mCancel;
private TextView mSize;
private TextView mSpeed;
private long mTaskId = -1;
private static final String DOWNLOAD_URL =
"http://static.gaoshouyou.com/d/25/57/2e25bd9d4557ba31e9beebacfaf9e804.apk";
public DownloadPopupWindow(Context context) {
super(context, new ColorDrawable(Color.WHITE));
initWidget();
}
@Override protected int setLayoutId() {
return R.layout.dialog_download;
}
private void initWidget() {
mPb = mView.findViewById(R.id.progressBar);
mStart = mView.findViewById(R.id.start);
mCancel = mView.findViewById(R.id.cancel);
mSize = mView.findViewById(R.id.size);
mSpeed = mView.findViewById(R.id.speed);
mStart.setOnClickListener(this);
mCancel.setOnClickListener(this);
DownloadEntity entity = Aria.download(this).getFirstDownloadEntity(DOWNLOAD_URL);
if (entity != null) {
mPb.setProgress(entity.getPercent());
mSize.setText(CommonUtil.formatFileSize(entity.getFileSize()));
if (entity.getState() == IEntity.STATE_RUNNING) {
mStart.setText(getContext().getString(R.string.stop));
} else {
mStart.setText(getContext().getString(R.string.resume));
}
mTaskId = entity.getId();
} else {
mStart.setText(getContext().getString(R.string.start));
}
Aria.download(this).register();
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
if (mTaskId != -1) {
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/消消乐.apk")
.create();
mStart.setText(getContext().getString(R.string.stop));
break;
}
if (Aria.download(this).load(mTaskId).isRunning()) {
Aria.download(this).load(mTaskId).stop();
mStart.setText(getContext().getString(R.string.resume));
} else {
Aria.download(this).load(mTaskId).resume();
mStart.setText(getContext().getString(R.string.stop));
}
break;
case R.id.cancel:
Aria.download(this).load(mTaskId).cancel();
mStart.setText(getContext().getResources().getString(R.string.start));
mTaskId = -1;
break;
}
}
@Override protected void dataCallback(int result, Object obj) {
}
@Download.onTaskPre public void onTaskPre(DownloadTask task) {
mSize.setText(CommonUtil.formatFileSize(task.getFileSize()));
}
@Download.onTaskStop public void onTaskStop(DownloadTask task) {
mSpeed.setText("0.0kb/s");
mStart.setText(getContext().getString(R.string.resume));
}
@Download.onTaskCancel public void onTaskCancel(DownloadTask task) {
mPb.setProgress(0);
mSpeed.setText("0.0kb/s");
}
@Download.onTaskRunning public void onTaskRunning(DownloadTask task) {
long current = task.getCurrentProgress();
long len = task.getFileSize();
if (len == 0) {
mPb.setProgress(0);
} else {
mPb.setProgress((int) ((current * 100) / len));
}
mSpeed.setText(task.getConvertSpeed());
}
}
注意事项
初始化操作注意事项 从
3.4.3
版本开始,请不要使用Aria.download(getContext())
或Aria.download(getContext())
请使用:
Aria.download(this)
或Aria.download(this)
注册或移除监听注意事项
popupwindow.setOnDismissListener(new OnDismissListener() {
@Override public void onDismiss() {
}
});
如上,如果你已经对Popupwindow对象设置了OnDismissListener
事件,那么Aria将无法跟踪Popupwindow的生命周期;
这时你需要在Popupwindow的Dismiss
手动取消Aria的注册
@Override public void dismiss() {
super.dismiss();
Aria.download(this).unRegister();
}