0

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

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

    @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
    }
4

1 回答 1

0

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

如果您从 Cloud Firestore 获取数据,则添加 visibilty onComplete

于 2020-08-31T15:37:53.677 回答