package liudeli.ui.all;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Toast; public class DialogActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
} /**
* 普通对话框
* @param view
*/
public void commonDialog(View view) { // AlertDialog.Builder 使用了构建器模式(相当于你把所有材料给工人,工人把制作好的房子给你)
AlertDialog.Builder builder =
new AlertDialog.Builder(DialogActivity.this); // 注意:这里只能使用当前Activity的this,
// 不能使用:getApplicationContext(); getBaseContext(); 否则会有异常 builder.setCancelable(false); // 设置点击Dialog其他区域不隐藏对话框,默认是true builder.setTitle("警告");
builder.setMessage("你确定要清空所有资料吗 ?"); // PositiveButton 右边的按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alertToast("点击了确定");
}
}); // 左边的按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alertToast("点击了取消");
}
}); // 最左边的按钮
builder.setNeutralButton("明天提醒我", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alertToast("明天这个时候通知你");
}
}); AlertDialog alertDialog = builder.create(); // 工人把制作好的房子给你
alertDialog.show();
} /**
* 列表对话框(列表条目对话框,列表单选对话框,列表多选对话框)
* @param view
*/
public void listDialog(View view) {
// AlertDialog.Builder 使用了构建器模式(相当于你把所有材料给工人,工人把制作好的房子给你)
final AlertDialog.Builder builder =
new AlertDialog.Builder(DialogActivity.this); // 注意:这里只能使用当前Activity的this,
// 不能使用:getApplicationContext(); getBaseContext(); 否则会有异常 builder.setCancelable(false); // 设置点击Dialog其他区域不隐藏对话框,默认是true builder.setTitle("选择"); /**
* ⚠️注意:列表对话框,千万不能设置setMessage,否则列表数据不能显示
*/
// builder.setMessage("请选择以下编程语言"); builder.setIcon(R.mipmap.ic_launcher); /**
* 只要Dialog隐藏了就是调用这个监听
*/
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
alertToast("Dismiss");
}
}); /**
* 可以设置适配器,可以当作ListView来使用
*/
// builder.setAdapter(); String[] items = new String[]{"Java", "Android", "iOS"}; /**
* 设置列表数据 列表条目形式
*/
/*builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alertToast(which + "");
}
});*/ /**
* 设置列表数据 列表多选形式
*/
/*builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
alertToast(which + "");
}
});*/ /**
* 设置列表数据 列表单选形式
*/
builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alertToast(which + "");
dialog.dismiss();
}
}); // 必须放在后面 最后才能制作好
AlertDialog alertDialog = builder.create(); // 工人把制作好的房子给你 alertDialog.show();
} /**
* 进度条对话框(默认是不确定进度条,可以设置样式为确定进度条)
* @param view
*/
public void progressDialog(View view) {
final ProgressDialog progressDialog = new ProgressDialog(this); // 注意:这里只能使用当前Activity的this,
// 不能使用:getApplicationContext(); getBaseContext(); 否则会有异常
progressDialog.setTitle("提示");
progressDialog.setTitle("正在加载中,可能要等待大半天");
progressDialog.setCancelable(true); // 默认就是true // 设置为 确定进度条 (默认是不确定进度条)
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMax(100); new Thread(){
@Override
public void run() {
super.run();
for(int i=0; i< progressDialog.getMax(); i++) {
// 使用Android提供的睡眠
SystemClock.sleep(300);
progressDialog.setProgress(i + 1);
}
}
}.start(); progressDialog.show();
} private void alertToast(String text) {
Toast.makeText(DialogActivity.this, text, Toast.LENGTH_LONG).show();
} @Override
protected void onDestroy() {
super.onDestroy();
}
}

Layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="普通对话框"
android:onClick="commonDialog"
/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="列表对话框"
android:onClick="listDialog"
/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="进度条对话框"
android:onClick="progressDialog"
/> </LinearLayout>

Android-原生对话框的更多相关文章

  1. Android系统对话框——自定义关闭

    Android系统对话框--自定义关闭 Dialog是我们在项目中经常用到的,5.x以后的Dialog也很好看,很安卓风,Android也给我们提供了新的包,低版本可以显示一样的效果.我们在使用的导入 ...

  2. 拓展 Android 原生 CountDownTimer 倒计时

    拓展 Android 原生 CountDownTimer 倒计时 [TOC] CountDownTimer 在系统的CountDownTimer上进行的修改,主要是拓展了功能,当然也保留了系统默认的模 ...

  3. Android原生json和fastjson的简单使用

    android原生操作json数据 主要是两个类 JSONObject 操作对象     JONSArray操作json数组 对象转json //创建学生对象 Student student=new ...

  4. Android原生游戏开发:使用JustWeEngine开发微信打飞机

    使用JustWeEngine开发微信打飞机: 作者博客: 博客园 引擎地址:JustWeEngine 示例代码:EngineDemo JustWeEngine? JustWeEngine是托管在Git ...

  5. android原生ExpandableListView

    android原生可扩展ExpandableListView就是可以伸缩的listView,一条标题下面有多条内容. 这个list的adapter对的数据要求与普通ListView的数据要求也有一些差 ...

  6. [Android Pro] android 4.4 Android原生权限管理:AppOps

    reference : http://m.blog.csdn.net/blog/langzxz/45308199 reference : http://blog.csdn.net/hyhyl1990/ ...

  7. 【android原生应用】之闹钟应用搭起篇

    由于工作原因接触android开发一段时间了,对于开发有了一些了解,于是萌生了搭起android原生应用进行分析和学习的想法.先从闹钟应用开始吧. 1.首先要下载原生应用,原生应用在原生系统里面(当然 ...

  8. PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

    PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码 看看新闻网>看引擎>开源产品 0人收藏此文章, 发表于8小时前(2013-09-06 00:39) ...

  9. Android 原生listview item伸展收缩效果

    Android原生listview做的一个item的伸缩效果.*永远不要让你老大有机会改需求 package com.example.yunkanglast; import java.io.Seria ...

  10. Android原生APP内分享

    Android原生APP内分享,可实现数据分享以及assets文件夹分享及私有文件分享 项目地址:https://github.com/json-pu/AndroidAppShare.git

随机推荐

  1. android 2.3.3 配置github的两步骤

    第一步:配置GitHub的总账号(Version Control) 第二步:配置具体的仓库(仓库名称你从GitHub网上添加)

  2. 「小程序JAVA实战」springboot的后台搭建(31)

    转自:https://idig8.com/2018/08/29/xiaochengxujavashizhanspringbootdehoutaidajian31/ 根据下面的图,我们来建立下对应的sp ...

  3. httpd 系统错误 无法启动此程序,因为计算机中丢失VCRUNTIME140.dll

    说来话长的搭了一个discuz论坛,服务器是apache,我本地的是直接从官网下的(值得吐槽的是官网居然拿不提供编译版本么要从第三方网站获取,不知道为何....),对应apache之前是搭bug管理系 ...

  4. 简单的mysql热备

    最近一直担心数据出问题,还好领导给了一台备用机,装好mysql后搜了下mysq热备相关的帖子,看似好繁琐,自己大概配置了一下擦发现起始很简单! 下边就是步骤了! 1.修改主从mysql配置文件,在my ...

  5. 利用Condition实现多线程交替执行

    一.需求 A.B.C 三个线程,循环10次,打印出自己的名称,ABC,ABC,ABC... A.B.C 三个线程,循环10次,打印出自己的名称,A一次,B三次,C五次,ABBBCCCCC,ABBBCC ...

  6. LVM 逻辑卷管理

    简介: LVM ( Logical Volume Manager ) 逻辑卷管理 一.创建 LV 1.首先在你的虚拟机上添加一块新的硬盘用来做实验. 2.安装 lvm : yum -y install ...

  7. druid 连接池的配置

    dataSource配置   <!-- 基于Druid数据库链接池的数据源配置 --> <bean id="dataSource" class="com ...

  8. Ubuntu 15.04 开机无法进入图形界面,自动进入emergency mode解决方法

    原因:关机的时候没有正常退出,直接强制关机了... 解决: 就是在那个GIVE root password for maintenance (or type control-D to continue ...

  9. 在MyEclipse中用debug调试应用程序

    F5:单步测试,作用是跳入,比如说一大步中分为10小步,单击F5一次就会走完一小步,走完这一大步则需要单步10次.F6:与F5一样也是单步测试.只不过与F5不同的是F5追求的是过程,而F6追求的是结果 ...

  10. Think In Java 读后感

         近期拜读了Think in Java 一书,这里是一些读后感.        此书不仅仅是市面上那种教会你怎么用系统API来编程的书,那种书太多.        此书不仅仅从头开始讲述了如何 ...