Android之对话框
一:AlertDialog
AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。
要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法。
AlertDialog.Builder常用方法
setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems :设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setNeutralButton :普通按钮setPositiveButton :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框
import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog.Builder; import android.app.AlertDialog; import android.view.Menu; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)this.findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Builder adInfo=new AlertDialog.Builder(MainActivity.this); adInfo.setTitle("简单对话框"); //设置标题 adInfo.setMessage("test"); //设置内容 adInfo.setIcon(R.drawable.ic_launcher); //设置图标 adInfo.create(); adInfo.show(); } }); }
1.AlertDialog可以显示3个按钮,现在我们增加显示按钮
1. dialog.setPositiveButton按钮显示在右边,2. dialog.setNegativeButton显示在左边3.dialog.setNeutralButton按钮显示在正中
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)this.findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Builder adInfo=new AlertDialog.Builder(MainActivity.this); adInfo.setTitle("简单对话框"); //设置标题 adInfo.setMessage("test"); //设置内容 adInfo.setIcon(R.drawable.ic_launcher); adInfo.setPositiveButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 根据实际情况编写相应代码。 } }); //为“取消”按钮注册监听事件 adInfo.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 根据实际情况编写相应代码。 } }); adInfo.create(); adInfo.show(); } }); }
2.AlertDialog+按钮和复选框
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)this.findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub String[] choices={"Facebook","Twitter"}; //Check判断数组,与选项对应 boolean[] chsBool = {true,false}; //包含多个选项及复选框的对话框 AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) .setIcon(android.R.drawable.btn_star_big_on) .setTitle("调查") .setMultiChoiceItems(choices, chsBool, multiClick) .setPositiveButton("yes", onclick) .setNegativeButton("No", onclick).create(); dialog.show(); } }); } OnMultiChoiceClickListener multiClick = new OnMultiChoiceClickListener(){ @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { Toast.makeText(MainActivity.this, "第"+(which+1)+"项,选中结果:"+isChecked,Toast.LENGTH_SHORT).show(); } }; OnClickListener onclick = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub switch (which) { case Dialog.BUTTON_NEGATIVE: Toast.makeText(MainActivity.this, "No..", Toast.LENGTH_LONG).show(); break; case Dialog.BUTTON_NEUTRAL: Toast.makeText(MainActivity.this, "I don‘t know.", Toast.LENGTH_LONG).show(); break; case Dialog.BUTTON_POSITIVE: Toast.makeText(MainActivity.this, "Yes!!", Toast.LENGTH_LONG).show(); break; } } };
二、自定义AlertDialog
如何自定义一个对话框呢?
(1)修改系统默认的Dialog样式(风格、主题)
(2)自定义Dialog布局文件
(3)可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类。
待续。。。。
三、ProgressDialog
1.圆形进度条的使用
public class MainActivity extends Activity { private Button button1,button2; //声明进度条对话框 private ProgressDialog pdDialog=null; //进度计数 int iCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button)this.findViewById(R.id.progress); button2=(Button)this.findViewById(R.id.circle); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub iCount = 0; pdDialog=new ProgressDialog(MainActivity.this); //设置进度条风格,风格为圆形,旋转的 pdDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); // 设置ProgressDialog 标题 pdDialog.setTitle("圆形进度条"); // 设置ProgressDialog 提示信息 pdDialog.setMessage("正在下载中……"); // 设置ProgressDialog 标题图标 pdDialog.setIcon(R.drawable.ic_launcher); // 设置ProgressDialog 进度条进度 pdDialog.setProgress(100); // 设置ProgressDialog 的进度条是否不明确 pdDialog.setIndeterminate(false); // 设置ProgressDialog 是否可以按退回按键取消 pdDialog.setCancelable(true); // 设置ProgressDialog 的一个Button pdDialog.setButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int i) { //点击“取消”按钮取消对话框 dialog.cancel(); } }); pdDialog.show(); //创建线程实例 new Thread(){ public void run(){ try{ while (iCount <= 100) { // 由线程来控制进度。 pdDialog.setProgress(iCount ++); Thread.sleep(50); } pdDialog.cancel(); } catch (InterruptedException e){ pdDialog.cancel(); } } }.start(); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub } }); }
2、环形进度条的使用
将其类型改成
pdDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。