Android 如何在加载活动时显示进度条?安卓
我有一些活动onCreate函数需要几秒钟,因为我必须从firebase数据库加载一些数据。 如何在加载活动时显示进度条 编辑: 这是我的活动,如果设置背景,我无法隐藏进度条: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)
@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获取数据,请添加VisibilityonComplete
谢谢您的回答。我只想在加载时看到进度条,然后再查看完成的活动。我该怎么做?在没有看到您的布局活动的情况下,我说不出正确的方法,但有一种方法是制作一个相对布局,并在其上有一个覆盖所有内容的背景,一旦加载数据,使相对布局可见性消失。我选择使用您的第一个答案,但我有一个问题:当我使用progressBar.setVisibility(View.gone);,我仍然可以在后台看到进度条。如果我没有为我的活动添加背景,进度条也会隐藏。有什么问题?我正在用我的活动代码更新帖子。