- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章浅析Android中强大的Dialog由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
android中经常会使用到dialog(弹出框效果),而且功能非常强大,可以模拟出n种弹出框效果。如图所示:
下面将通过一个小实例,来像大家展示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();//创建并显示弹出框 } } } 。
布局文件部分,比较简单:
最后此篇关于浅析Android中强大的Dialog的文章就讲到这里了,如果你想了解更多关于浅析Android中强大的Dialog的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
很多朋友或许都有这个疑问,一个网站域名和网站的排名有关系吗?今天本文就从三个方面分析网站的域名与网站的排名有没有关系,希望对大家有一定的帮助。 1、全拼双拼域名 首先,我们要知道在这一点百
什么是进程 当一个程序进入内存中运行起来它就变为一个进程。因此,进程就是一个处于运行状态的程序。同时进程具有独立功能,进程是操作系统进行资源分配和调度的独立单位。 什么是线程 线程是进
最近几年,互联网络竞争异常激烈,各个企业为了增加业绩,都在网络销售中下足了功夫。要确定网站发展的方向,必须给自己的网站制定好一个发展目标,有了目标才能更好的发展。不管
一.基础知识准备: 1.层的原则: (1)每一层以接口方式供上层调用。 (2)上层只能调用下层。 (3)依赖分为松散交互和严格交互两种。 2.业务逻辑分类: (1)应
编程时一门技术,更是一门艺术 简单工厂模式利用面向对象方式通过继承、封装、多态把程序的耦合度降低,设计模式使得程序更加灵活,容易修改,易于复用。 下面是服务器计算器代码:
对于策略模式的理解:当一个业务有多种需求时候,在某个时候需要使用不同的方式来计算结果。这时候不同的方式可以理解为不同的策略来解决同样的问题。 例如:商场收银系统计算价格,1:正常计算 2:商品打折计
随着 Kubernetes 在企业中应用的越来越广泛和普及,越来越多的公司在生产环境中运维多个集群。本文主要讲述一些关于多集群 Kubernetes 的思考,包括为什么选择多集群,多集群的好处以
Kubelet 出于对节点的保护,允许在节点资源不足的情况下,开启对节点上 Pod 进行驱逐的功能。最近对 Kubelet 的驱逐机制有所研究,发现其中有很多值得学习的地方,总结下来
以下分析不针对任何快递公司,纯属实说。 申通快递在快递行业中速度与费用都属于中等的水平,在国内也分布有很多投递点,一般地区都可以投递到;顺丰在国内是速度最快的快递公司之一,一般来说隔天就能够到,其
概述 流(streams)是PHP4.3版本引入的一个特性,主要是为了统一文件、sockets以及其他类似资源的工作方法。PHP4.3距今已经有很长时间了,但是很多程序员似乎都不能正确使用PHP中
Pre 很早在看 Jesse 的 Asp.net Core快速入门 的课程的时候就了解到了在Asp .net core中,如果添加的Json配置被更改了,是支持自动重载配置的,作为一名有着严重&q
之前对closure一知半解,在网上也找不到一篇文章能把它说清楚,今天好像第一次对它有点清晰的了解 了,写个BLOG记念一下 lua的函数是一种 First-Class Value 的东西, 到底
1、什么是默认方法,为什么要有默认方法 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法。只需在方法名前面加个default关键字即可。 为什么要有这个特性?首先,之前的接口是个双
信息数据传输的安全一直都是个很重要的话题,从刚开始当程序员时错以为MD5、SHA1这些哈希算法就是加密算法,到后来慢慢接触对称加密、非对称加密这些概念,再到对接各种大开发平台接口的时候看到他们通
前言 2021年,vanilla-extract 作为黑马登顶了 css-in-js 满意度榜首(虽然使用率仅为1%),号称是一个类型安全、高度兼容 TS 场景的库,国内相关讨论还很少,稍微看
(一)响应式数据 1. 简单例子 从最简单的数据绑定开始,在 Vue 2.0 中,我们这样将一个数据绑定到模板的指定位置: 在组件创建参数的 data 构造函数中返回一个用来绑定的数据对象,其
我是一名优秀的程序员,十分优秀!