我即将第一次接触 ProgressDialog
,所以我没有任何经验。但在 API 26 中,它已被弃用,我们应该使用 ProgressBar
代替。
这是我的简单实现(上传到 Firebase 存储):
sR.putFile(mFilePath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
mProgressBar.setProgress(0);
Toast.makeText(MainActivity.this, "Upload successful", Toast.LENGTH_SHORT).show();
Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),
taskSnapshot.getDownloadUrl().toString());
String uploadId = mDatabase.push().getKey();
mDatabase.child(uploadId).setValue(upload);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
mProgressBar.setProgress((int) progress);
}
});
问题:
如您所见,我在
onSucess
方法中将 ProgressBar 重置为 0,这使得 ProgressBar 在视觉上永远不会达到 100%。这是正确的方法还是应该延迟重置,以便用户暂时看到100%
?我没有找到最佳实践。只要上传正在运行,我就应该禁用上传按钮吗?
编辑:
这足以延迟进度条吗?
sR.putFile(mImageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mProgressBar.setProgress(0);
}
}, 500);
Toast.makeText(MainActivity.this, "Upload successful", Toast.LENGTH_SHORT).show();
Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),
taskSnapshot.getDownloadUrl().toString());
String uploadId = mDatabase.push().getKey();
mDatabase.child(uploadId).setValue(upload);
}
})
最佳答案
用户对用户界面的引导越好,他对应用程序质量的总体看法就越好。
我认为你应该这样做。我总是让条形图显示 100% 大约 300 毫秒,然后再隐藏它们(动画:300 毫秒动画持续时间)。我认为这比立即隐藏它们更加用户友好。
您应该在上传时禁用上传按钮(更好),或者在点击时告诉用户上传正在执行。
关于android - ProgressBar 是否应该在达到 100% 后等待片刻?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48035681/