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); 

原文地址:https://www.cnblogs.com/ilooking/p/4262625.html