android - ProgressBar 是否应该在达到 100% 后等待片刻?

标签 android firebase progressdialog

我即将第一次接触 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);
                    }
                });

问题:

  1. 如您所见,我在 onSucess 方法中将 ProgressBar 重置为 0,这使得 ProgressBar 在视觉上永远不会达到 100%。这是正确的方法还是应该延迟重置,以便用户暂时看到 100%?我没有找到最佳实践。

  2. 只要上传正在运行,我就应该禁用上传按钮吗?

编辑:

这足以延迟进度条吗?

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);
                    }
                })

最佳答案

用户对用户界面的引导越好,他对应用程序质量的总体看法就越好。

  1. 我认为你应该这样做。我总是让条形图显示 100% 大约 300 毫秒,然后再隐藏它们(动画:300 毫秒动画持续时间)。我认为这比立即隐藏它们更加用户友好。

  2. 您应该在上传时禁用上传按钮(更好),或者在点击时告诉用户上传正在执行。

关于android - ProgressBar 是否应该在达到 100% 后等待片刻?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48035681/

相关文章:

android - dispatchDraw 太多了,为什么?

android - RxAndroid - 从 flatMap 返回一个数组列表

android - android :gravity in attrs. xml 的正确格式?

java - ProgressDialog 新 Activity Asynctask 未显示,为什么?

android - 从 OptionsMenu 显示一个 progressDialog

android - 开始使用 Android 游戏和 AdMob

java - 安卓 :how to display all users in firebase database except one

swift - Xcode Swift Firebase 如何创建 FIRAuth 的第二个实例

firebase - 如何在 flutter firebase 中解决这个 NoSuchMethodError

android - 向进度对话框添加延迟