1.进度条对话框(ProgressDialog)
让用户了解进度最典型方式
用户显示一个进度条,或者一个动态浏览图示
package com.example.zidingyi_jindutiao;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private final static int MSG_PROGRESS=0x0001;
private final static int MSG_FINISH=0x0002;
private ProgressDialog dlg;
private Handler handler = new Handler() { //6.把消息传递到主线程中的消息队列
@Override
public void handleMessage(@NonNull Message msg) { //7.通过这个方法接受消息,并做更改
//运行在UI线程中
switch (msg.what){
case MSG_PROGRESS:
int progress=msg.arg1; //8.设置进度,拿到进度的值
dlg.setProgress(progress); //9.把进度放进去
break;
case MSG_FINISH:
//13.工作完成,关闭对话框
dlg.dismiss();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建进度条对话框
dlg=new ProgressDialog(this);
//设置属性
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setMessage("这是一个进度条");
dlg.setTitle("进度条");
dlg.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置水平进度条
}
/**
* 显示进度条对话框
* @param view
*/
public void displayProgressDialg(View view) {
dlg.show(); //按钮被点击完成显示
new Thread(){ //1.创建一个新线程
public void run(){ //3.线程完成的工作
for (int i=0;i<=100;i++){
//5.希望把值传递到主线程中,主线程消息机制可以对它做一个处理
Message msg=handler.obtainMessage(); //11.表示从消息队列拿空消息
msg.what=MSG_PROGRESS; //表示
msg.arg1=i; //传递一个整型值
handler.sendMessage(msg); //10希望传递消息
try {
Thread.sleep(100); //休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
}
handler.sendEmptyMessage(MSG_FINISH); //12.发送完成工作消息
}
}.start(); //2.线程启动
}
}
2.自定义对话框(Dialog)
①产生一个Dialog类的实例
使用方法setContentView(View view)
设置自定义的视图
②使用AlertDialog.Builder
创建AlerDialog实例
使用方法setView(View view)
设置自定义视图
使用方法.create()
创建对象
/**
* 创建一个Dialog对象
*/
private void createCustomDialog(){
LayoutInflater inflater=getLayoutInflater();
View customView=inflater.inflate(R.layout.custom_view2,null);
Button btnOk=customView.findViewById(R.id.btnOk);
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//关闭对话框
customDialog.dismiss();
}
});
customDialog=new Dialog(this);
customDialog.setTitle("自定义");
customDialog.setContentView(customView);
}
public void displayCustomDialg2(View view) {
customDialog.show();
}