【问题标题】:How to display progress bar while the activity is loading? AndroidActivity 加载时如何显示进度条?安卓
【发布时间】:2020-08-31 15:25:35
【问题描述】:

我有一些活动,onCreate 函数需要几秒钟,因为我必须从 firebase 数据库加载一些数据。 如何在加载 Activity 时显示进度条?

编辑: 这是我的活动,如果我设置背景,我无法隐藏进度条:

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_torim);

        pb = findViewById(R.id.pb);
        pb.setVisibility(View.VISIBLE);
        mStorageRef = FirebaseStorage.getInstance().getReference("backgrounds");

        try {
            setBackground();
        } catch (IOException e) {
            e.printStackTrace();
        }
        dbreference.child(uid).child("name").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                      //some code
                }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
        // some buttons
    }

    private void setBackground() throws IOException {
        StorageReference imageRef = mStorageRef.child("background.jpeg");

        final File localFile = File.createTempFile("Images", "jpg");
        imageRef.getFile(localFile)
                .addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
                        final Bitmap bitmap = BitmapFactory.decodeFile(localFile.getAbsolutePath());
                        Drawable d = new BitmapDrawable(getResources(), bitmap);
                        d.setAlpha(127);
                        getWindow().setBackgroundDrawable(d);
                        pb.setVisibility(View.GONE);
                        pb.clearAnimation();
                    }
                }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                // Handle failed download
                // ...
            }
        });
    }

    @Override
    public void onBackPressed() {
        //some code
    }

【问题讨论】:

    标签: android firebase android-activity progress-bar


    【解决方案1】:

    在您的布局中添加ProgressBar 并将其设置为在onCreate 中可见,然后当您从onDataChange 内的Firebase 实时数据库中获取数据时,使用此progressBar.setVisibility(View.GONE); 使其可见

    如果您从 Cloud Firestore 获取数据,请添加可见性 onComplete

    【讨论】:

    • 感谢您的回答。我只想在加载时查看进度条,然后再查看已完成的活动。我该怎么做?
    • 好吧,如果没有看到您的布局活动,我不能说正确的方法,但一种方法是制作一个相对布局并在其上设置一个涵盖所有内容的背景,一旦加载数据,就可以使相对布局可见性走了。
    • 我选择使用你的第一个答案,我有一个问题:当我使用progressBar.setVisibility(View.GONE);时,我仍然在后台看到进度条。如果我没有在我的活动中添加背景,进度条也会被隐藏。问题是什么?我正在用我的活动代码更新帖子。
    猜你喜欢
    • 2011-06-19
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2014-08-06
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多