gpt4 book ai didi

浅析Android中强大的Dialog

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章浅析Android中强大的Dialog由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

android中经常会使用到dialog(弹出框效果),而且功能非常强大,可以模拟出n种弹出框效果。如图所示:

浅析Android中强大的Dialog

下面将通过一个小实例,来像大家展示android中功能强大的dialog。代码都写了详细的注释,读者不妨试着手动去敲.

当然,由于时间的关系,还有个别功能没有完成,先有的几个展示效果中也可能有bug,代码也有很多需要优化的地方。望大家热心指出.

下面是代码(有点长哦):

复制代码 代码如下:

package com.chaoyang.activity,

  。

import java.util.arraylist,

import android.app.activity; import android.app.alertdialog; import android.app.progressdialog; import android.content.dialoginterface; import android.os.bundle; import android.view.view; import android.widget.button,

public class mainactivity extends activity {     /** called when the activity is first created. */  final string[] items={"张三","李四","王五","赵六","阿猫","阿狗"};     int msinglechoiceid = -1;     arraylist <integer>multichoiceid = new arraylist <integer>();     private progressdialog mprogressdialog  = null;     private static final int max_progress = 100;     @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.main);         /*start 设置那些按钮的点击监听对象*/         buttononcliklisten listen =new buttononcliklisten();         button btnconfim =(button)this.findviewbyid(r.id.btnconfim);         button btncheck =(button)this.findviewbyid(r.id.btncheck);         button btncustom =(button)this.findviewbyid(r.id.btncustom);         button btnlist =(button)this.findviewbyid(r.id.btnlist);         button btnmore =(button)this.findviewbyid(r.id.btnmore);         button btnprogressbar =(button)this.findviewbyid(r.id.btnprogressbar);         button btnread =(button)this.findviewbyid(r.id.btnread);         button btnridio =(button)this.findviewbyid(r.id.btnridio);         btnconfim.setonclicklistener(listen);         btncheck.setonclicklistener(listen);         btnconfim.setonclicklistener(listen);         btnlist.setonclicklistener(listen);         btnmore.setonclicklistener(listen);         btnprogressbar.setonclicklistener(listen);         btnread.setonclicklistener(listen);         btnridio.setonclicklistener(listen);         /* end */     }     //定义一个公共方法,弹出消息     private void showdialogmsg(string msg) {      new alertdialog.builder(mainactivity.this)             .setmessage(msg)             .show();        }     //定义一个内部类,继承至onclicklistener,专门来处理按钮点击事件(面向对象,灵活)     private final class buttononcliklisten implements view.onclicklistener     { 。

  @override   public void onclick(view v) {    // todo auto-generated method stub    button button =(button) v;//接收被点击的button对象    alertdialog.builder builder =new alertdialog.builder(mainactivity.this);//定义一个弹出框对象    builder.seticon(r.drawable.aa);//设置弹出框的icon    switch (v.getid())    {    case r.id.btnconfim :     builder.settitle("确定提交吗?");//设置弹出框的标题     builder.setpositivebutton("确定", new dialoginterface.onclicklistener() {       @override      public void onclick(dialoginterface dialog, int which) {       showdialogmsg("您选择了确定");      }     });     builder.setnegativebutton("取消", new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       showdialogmsg("您选择了取消");        }     });     break;    case r.id.btnmore:     builder.settitle("评价");//标题     builder.setmessage("说说李孝利在你心里的印象");//弹出框消息     builder.setpositivebutton("性感",new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       // todo auto-generated method stub          showdialogmsg("您觉得她很性感");       }     });     builder.setneutralbutton("漂亮", new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       // todo auto-generated method stub        showdialogmsg("您觉得她很漂亮");       }     });     builder.setnegativebutton("风骚", new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       // todo auto-generated method stub       showdialogmsg("您觉得她很风骚");      }     });     break; case r.id.btnlist :     builder.settitle("列表框");     builder.setitems(items, new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       // todo auto-generated method stub      showdialogmsg("您选择了id为"+which+"的人,名字叫:"+items[which]);       }     });     break;    case r.id.btnridio:      msinglechoiceid = -1;     builder.settitle("单选框");     builder.setsinglechoiceitems(items, 0, new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       // todo auto-generated method stub       msinglechoiceid=which;       showdialogmsg("您选择了id是"+msinglechoiceid+",名字为:"+items[which]);      }     });     builder.setpositivebutton("确定", new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       // todo auto-generated method stub       if(msinglechoiceid>-1)       {        showdialogmsg("您最终选择的是"+items[msinglechoiceid]);       }else       {        showdialogmsg("您最终选择的是"+items[0]);       }      }     });     builder.setnegativebutton("取消", new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       // todo auto-generated method stub      }     });     break; case r.id.btncheck :  multichoiceid.clear(); //先清空集合     builder.settitle("多项选择");     builder.setmultichoiceitems(items,new boolean[]{false,false,false,false,false,false}, new dialoginterface.onmultichoiceclicklistener() {      @override      public void onclick(dialoginterface dialog, int which, boolean ischecked) {       // todo auto-generated method stub       if(ischecked)       {        multichoiceid.add(which);        showdialogmsg("您选择了"+items[which]);       }else       {        multichoiceid.remove(which);       }      }     });     builder.setpositivebutton("确定", new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       // todo auto-generated method stub      string str="";      for(int i = 0;i<multichoiceid.size();i++)      {       str+=items[multichoiceid.get(i)]+",";      }      //去掉最后一个","      if(str.length()>0){     str = str.substring(0,str.length()-1);      }      showdialogmsg("你一共选择的有"+str);      }     });     builder.setnegativebutton("取消", new dialoginterface.onclicklistener() {      @override      public void onclick(dialoginterface dialog, int which) {       // todo auto-generated method stub      }     });     break;    case r.id.btnprogressbar:     mprogressdialog =new progressdialog(mainactivity.this);     mprogressdialog.settitle("进度条窗口");     mprogressdialog.setprogressstyle(progressdialog.style_horizontal);//设置样式     mprogressdialog.setmax(max_progress);//设置最大值      mprogressdialog.setbutton("确定", new dialoginterface.onclicklistener() {                   public void onclick(dialoginterface dialog, int whichbutton) {                       //这里添加点击后的逻辑                   }               });               mprogressdialog.setbutton2("取消", new dialoginterface.onclicklistener() {                   public void onclick(dialoginterface dialog, int whichbutton) {                       //这里添加点击后的逻辑                   }               });               mprogressdialog.show();               new thread().start();               return; case r.id.btncustom:     break; case r.id.btnread:  break;    }    builder.create().show();//创建并显示弹出框        }         }     } 。

布局文件部分,比较简单:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<textview 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
    <button
    android:id="@+id/btnconfim"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="确定/取消"
    />
     <button
    android:id="@+id/btnmore"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="多个消息提示"
    />
     <button
    android:id="@+id/btnlist"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="列表框"
    />
     <button
    android:id="@+id/btnprogressbar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="进度条框"
    />
     <button
    android:id="@+id/btnridio"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="单选框"
    />
     <button
    android:id="@+id/btncheck"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="多选框"
    />
     <button
    android:id="@+id/btncustom"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="自定义布局"
    />
      <button
    android:id="@+id/btnread"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="读取进度框"
    />
</linearlayout>

最后此篇关于浅析Android中强大的Dialog的文章就讲到这里了,如果你想了解更多关于浅析Android中强大的Dialog的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com