Android 如何在加载活动时显示进度条?安卓

Android 如何在加载活动时显示进度条?安卓,android,firebase,android-activity,progress-bar,Android,Firebase,Android Activity,Progress Bar,我有一些活动onCreate函数需要几秒钟,因为我必须从firebase数据库加载一些数据。 如何在加载活动时显示进度条 编辑: 这是我的活动,如果设置背景,我无法隐藏进度条: @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_torim)

我有一些活动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
    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_torim);
pb=findViewById(R.id.pb);
pb.setVisibility(View.VISIBLE);
mStorageRef=FirebaseStorage.getInstance().getReference(“背景”);
试一试{
挫折();
}捕获(IOE异常){
e、 printStackTrace();
}
dbreference.child(uid.child(“name”).addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
//一些代码
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
//一些钮扣
}
私有void setBackground()引发IOException{
StorageReference imageRef=mStorageRef.child(“background.jpeg”);
最终文件localFile=File.createTempFile(“图像”、“jpg”);
imageRef.getFile(本地文件)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(FileDownloadTask.TaskSnapshot TaskSnapshot){
最终位图位图=BitmapFactory.decodeFile(localFile.getAbsolutePath());
Drawable d=新的BitmapDrawable(getResources(),位图);
d、 setAlpha(127);
getWindow().setBackgroundDrawable(d);
pb.setVisibility(View.GONE);
pb.clearAnimation();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//句柄下载失败
// ...
}
});
}
@凌驾
public void onBackPressed(){
//一些代码
}

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


如果您从Cloud Firestore获取数据,请添加Visibility
onComplete

谢谢您的回答。我只想在加载时看到进度条,然后再查看完成的活动。我该怎么做?在没有看到您的布局活动的情况下,我说不出正确的方法,但有一种方法是制作一个相对布局,并在其上有一个覆盖所有内容的背景,一旦加载数据,使相对布局可见性消失。我选择使用您的第一个答案,但我有一个问题:当我使用progressBar.setVisibility(View.gone);,我仍然可以在后台看到进度条。如果我没有为我的活动添加背景,进度条也会隐藏。有什么问题?我正在用我的活动代码更新帖子。