zoukankan      html  css  js  c++  java
  • 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); 

  • 相关阅读:
    索引的结构和性能的关系
    TP5的多图上传
    TP5页面更改数字进行AJAX排序
    安装Git版本控制系统 以及Git Bash的基础命令
    tp5 前台 点击显示一个弹窗
    Tp5 (轮回) 多个富文本应用
    Tp5 (轮回) AJAX请求写搜索页面
    安装 SVN 服务器
    Tp5(轮回)------单图上传 运用AJAX 请求
    TP5中(通过一个表去取另一个表的相对应的名称)
  • 原文地址:https://www.cnblogs.com/ilooking/p/4262625.html
Copyright © 2011-2022 走看看