Android开发之对话框案例详解(五种对话框)

下面通过实例代码给大家分享5种android对话框,具体内容详情如下所示:

1 弹出普通对话框 --- 系统更新

2 自定义对话框-- 用户登录

3 时间选择对话框 -- 时间对话框

4 进度条对话框 -- 信息加载..

5 popuWindow对话框

1 弹出普通对话框 --- 系统更新 

//弹出普通对话框
  public void showNormalDialog(View v) {
    AlertDialog.Builder builder = new Builder(this);
    //设置Dialog的图标
    builder.setIcon(R.drawable.ic_launcher);
    //设置对话框的标题
    builder.setTitle("更新");
    //设置message
    builder.setMessage("发现新版本是否更新?");
    //确定按钮  取消按钮
    builder.setPositiveButton("确定",new OnClickListener() {
      /**
       * 点击确定按钮 回调该方法
       */
      @Override
      public void onClick(DialogInterface dialog, int which) {
        //到服务器去下载新的版本 duration单词意思:时长
        Toast.makeText(MainActivity.this, "开始下载新版本", Toast.LENGTH_SHORT).show();
      }
    });
    builder.setNegativeButton("取消", new OnClickListener() {
      /**
       * 点击取消按钮 回调该方法
       */
      @Override
      public void onClick(DialogInterface dialog, int which) {
        //到服务器去下载新的版本 duration单词意思:时长
        Toast.makeText(MainActivity.this, "不需要更新", Toast.LENGTH_SHORT).show();
      }
    });
    builder.setNeutralButton("下一次", new OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        //到服务器去下载新的版本 duration单词意思:时长
        Toast.makeText(MainActivity.this, "下一次吧", Toast.LENGTH_SHORT).show();
      }
    });
    //通过建造这老构建一个对话框
    Dialog dialog = builder.create();
    //显示
    dialog.show();
  } 

2 自定义对话框-- 用户登录

布局文件:

user_name_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:padding="10dip"
  android:orientation="vertical" >
  <TextView
      android:id="@+id/tv_title"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="登录信息"
      android:gravity="center"
      android:textAppearance="?android:attr/textAppearanceLarge" />
  <TextView
    android:id="@+id/tv_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="用户名:" />
  <EditText android:id="@+id/et_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入用户名"/>
  <TextView
    android:id="@+id/tv_pwd"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="密 码:" />
  <EditText android:id="@+id/et_pwd"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:hint="请输入密码"/>
    <requestFocus />
    <Button
      android:id="@+id/btn_confirm"
      android:layout_width="150dip"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:text="登录" />
    <Button
      android:id="@+id/btn_cancel"
      android:layout_width="150dip"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:text="取消" />
</LinearLayout> 

java代码:

//自定义对话框
  Dialog cus_dialog ;
  public void showCustomDialog(View v){
    AlertDialog.Builder builder = new Builder(this);
    // 布局填充器
    LayoutInflater inflater = LayoutInflater.from(this);
    View view = inflater.inflate(R.layout.user_name_dialog, null);
    // 设置自定义的对话框界面
    builder.setView(view);
    // 获取用户名密码
    final EditText name = (EditText) view.findViewById(R.id.et_name);
    final EditText pwd = (EditText) view.findViewById(R.id.et_pwd);
    Button btn_confirm = (Button) view.findViewById(R.id.btn_confirm);
    btn_confirm.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // TODO 自动生成的方法存根
        if(name.getText().toString().trim().equals("abc")){
          showToastMsg("用户名正确");
          // 对话框消失
          cus_dialog.dismiss();
        }
        else{
          showToastMsg("用户名错误");
        }
      }
    });
    Button btnCancel = (Button) view.findViewById(R.id.btn_cancel);
    btnCancel.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // 对话框消失
        cus_dialog.dismiss();
      }
    });
    cus_dialog = builder.create();
    cus_dialog.show();
  } 

下载地址:http://www.jinhusns.com/Products/Download/?type=yhq

3 时间选择对话框 -- 时间对话框

// 时间选择对话框
public void showTimePickerDialog(View v){
  Calendar sysDate = Calendar.getInstance();
  //设置系统时间
  sysDate.setTimeInMillis(System.currentTimeMillis());
  int hour = sysDate.get(Calendar.HOUR_OF_DAY);
  int minute = sysDate.get(Calendar.MINUTE);
  TimePickerDialog time = new TimePickerDialog(this,
      new OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
          // TODO 自动生成的方法存根
          showToastMsg(" hourOfDay:" + hourOfDay + " minute:" + minute);
        }
      }, //callBack 选择时间后的回调方法
      hour,//hourOfDay 当前系统时间
      minute,//hourOfDay 当前系统时间
      true);//是否24小时制
  time.show();
} 

4 进度条对话框 -- 信息加载..

/**
   * 进度条对话框
   * @param v
   */
  public void showProgressDialog(View v){
    final ProgressDialog progress = new ProgressDialog(this);
    progress.setProgress(R.drawable.img2);
    progress.setTitle("标题");
    progress.setMessage("加载中...");
    //样式1 进度条样式
    progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    //样式2 有加载图标
    //progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    //最大
    progress.setMax(100);
    //当前
    progress.setProgress(50);
    progress.setButton("确定", new OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        // TODO 自动生成的方法存根
        showToastMsg("确定按钮");
      }
    });
    progress.setButton2("取消", new OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        // TODO 自动生成的方法存根
        showToastMsg("取消按钮");
      }
    });
    progress.show();
    new Thread(new Runnable() {
      @Override
      public void run() {
        // TODO Auto-generated method stub
        int i = 0;
        while (i < 100) {
          try {
            Thread.sleep(200);
            // 更新进度条的进度,可以在子线程中更新进度条进度
            progress.incrementProgressBy(5);
            // progress.incrementSecondaryProgressBy(10);//二级进度条更新方式
            i += 5;
          } catch (Exception e) {
            // TODO: handle exception
          }
        }
        // 在进度条走完时删除Dialog
        progress.dismiss();
      }
    }).start();
  } 

5 popuWindow对话框

Button btn_popu;
  //popuWindow对话框
  public void showPopuWindow(View v){
    btn_popu = (Button) v;
    // 设置布局
    View view = LayoutInflater.from(this).inflate(R.layout.pop_window, null);
    PopupWindow window = new PopupWindow(this);
    window.setContentView(view);
    window.setWidth(360);
    window.setHeight(200);
    int[] location = new int[2];
    // 获取按钮坐标
    btn_popu.getLocationInWindow(location);
    window.setFocusable(true);
    window.setBackgroundDrawable(getResources().getDrawable(R.drawable.back_null));
    window.showAtLocation(btn_popu, Gravity.LEFT |Gravity.TOP , location[0]+ btn_popu.getWidth(), location[1] + 0 );
    //showToastMsg("" + (location[0]+ btn_popu.getWidth())+"  "+ (location[1] + btn_popu.getHeight() / 2));
    ImageView img_start = (ImageView) view.findViewById(R.id.img_start);
    img_start.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // TODO 自动生成的方法存根
        showToastMsg("点击了启动");
      }
    });
  } 

总结

以上所述是小编给大家介绍的详解Android开发之对话框案例详解(五种对话框),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android开发入门之对话框简单用法

    本文实例讲述了Android开发入门之对话框简单用法.分享给大家供大家参考,具体如下: 注:本文只是一个学习笔记 用以记录自己学到哪了 1.获得AlertDialog的静态内部类Builder对象,由此类来创建对话框 2.通过Builder对象设置对话框的标题 按钮以及按钮响应的事件 3.调用Builder的Create()方法创建对话框 4.调用AlertDialog的show()方法显示对话框 main.xml文件 <?xml version="1.0" encoding=&

  • Android开发必知 九种对话框的实现方法

    在开发过程中,与用户交互式免不了会用到对话框以实现更好的用户体验,所以掌握几种对话框的实现方法还是非常有必要的.在看具体实例之前先对AlertDialog做一个简单介绍.AlertDialog是功能最丰富.实践应用最广的对话框,它可以生成各种内容的对话框.但实际上AlertDialog生成的对话框总体可分为以下4个区域:图标区.标题区.内容区.按钮区. 这里总结了九种对话框的实现方法,有需要的朋友可以来学习下了 除了popupwindow实现稍微麻烦一点,其他形似都相对简单,熟悉2便即可 直接上

  • Android开发之缓冲dialog对话框创建、使用与封装操作

    本文实例讲述了Android开发之缓冲dialog对话框创建.使用与封装操作.分享给大家供大家参考,具体如下: package com.hstech.handysystem.prompt; import android.app.Dialog; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.widget.TextView; import com.hstec

  • android开发教程之时间对话框核心代码

    复制代码 代码如下: new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) {                c.setTimeInMillis(System.currentTimeMillis());                c

  • Android开发之利用Activity实现Dialog对话框

    前言 在Android中经常要使用Dialog来实现一些提示以及一些特殊的效果,而且样式也不一样,每次都得查一大堆资料,还不一定能解决.对话框是个好东西,创建简单有实用.当下的开发中,很多的开发者反而更喜欢使用activity来代替对话框,至少笔者的团队中,类似于升级提示或者指示页及其他一些交互的地方,大量的把Dialog替换成activity,好处是显而易见的,activity具有更灵活的操作和布局,另外很重要一点是,一些容易涉及内存泄漏的代码放在activity中执行比放在Dialog中执行

  • Android开发之基于DialogFragment创建对话框的方法示例

    本文实例讲述了Android基于DialogFragment创建对话框的方法.分享给大家供大家参考,具体如下: /** * 使用DialogFragment创建对话框 * @description: * @author ldm * @date 2016-5-12 下午2:00:01 */ public class FragmentAlertDialog extends Activity { private Button button; @Override protected void onCre

  • Android开发之对话框案例详解(五种对话框)

    下面通过实例代码给大家分享5种android对话框,具体内容详情如下所示: 1 弹出普通对话框 --- 系统更新 2 自定义对话框-- 用户登录 3 时间选择对话框 -- 时间对话框 4 进度条对话框 -- 信息加载.. 5 popuWindow对话框 1 弹出普通对话框 --- 系统更新  //弹出普通对话框 public void showNormalDialog(View v) { AlertDialog.Builder builder = new Builder(this); //设置D

  • 使用IntelliJ IDEA 配置安卓(Android)开发环境的教程详解(新手必看)

      上移动端的测试课,老师和同学们用的都是eclipse, 只有我一个人用的是idea(用了两款软件之后觉得IDEA更好),真的太难了,配置环境就只有一个人孤军奋战了,自己选择的路,爬都要爬完,害!   有大佬推荐我用Android studio,去了解了一下,这个软件也不错,考虑到已经用了IDEA那就用吧. 操作环境和基本配置 操作环境:Win 10 基本环境配置:Java 1.8 基本工具:IDEA(自行下载安装购买,支持正版!) 一.jdk的下载安装与配置 1.1下载安装 jdk的官网下载

  • Android ExpandableListView使用方法案例详解

    目录 一.前言 二.实现的功能 三.具体代码 1.主xml代码 2.父布局xml代码 3.子布局xml代码 4.主activity代码 5.adapter代码 一.前言   "好记性不如烂笔头",再次验证了这句话是真的很有道理啊,一个月前看了一下ExpandableListView的使用,今天再看居然忘了这个是干啥的了,今天就详细讲解一下ExpandableListView的使用方法,感觉对于二级条目显示功能都可以实现. 二.实现的功能 1.可实现二级列表条目显示功能,具体包括可自定义

  • Android Intent与IntentFilter案例详解

    1. 前言        在Android中有四大组件,这些组件中有三个组件与Intent相关,可见Intent在Android整个生态中的地位高度.Intent是信息的载体,用它可以去请求组件做相应的操作,但是相对于这个功能,Intent本身的结构更值得我们去研究. 2. Intent与组件        Intent促进了组件之间的交互,这对于开发者非常重要,而且它还能做为消息的载体,去指导组件做出相应的行为,也就是说Intent可以携带数据,传递给Activity/Service/Broa

  • Android 启动模式FLAG_ACTIVITY_CLEAR_TOP案例详解

    四种启动模式 standard: 只要被启动就会创建一个新的 singleTop: 栈顶复用(当被启动的Activity处于Task栈顶时,可以复用,直接调用onNewIntent方法) singleTask: 栈中复用(被启动的Activity已经处于栈中,会将上边的Activity清除出栈,调用onNewIntent) singleInstance 全局单实例(应用场景:地图,Activity初始化需要大量资源) Intent的标志位FLAG Intent.FLAG_ACTIVITY_SIN

  • Android Kotlin使用SQLite案例详解

    Kotlin使用SQLite 首先确定我们的目标,SQLite只是一种工具,我们需要掌握就是增删改查就可以,我们真正需要动脑的还是项目中的业务逻辑.我这篇文章写得比较适合新手,没用过SQLite的同学. 前期准备工作 新建一个类MyDataBaseHelper继承自SQLiteOpenHelper,代码如下: class MyDatabaseHelper(var context: Context, name: String, version: Int) : SQLiteOpenHelper(co

  • Spi机制在Android开发的应用示例详解

    目录 Spi机制介绍 举个例子 ServiceLoader.load 在Android中的应用 总结 Spi机制介绍 SPI 全称是 Service Provider Interface,是一种将服务接口与服务实现分离以达到解耦.可以提升程序可扩展性的机制.嘿嘿,看到这个概念很多人肯定是一头雾水了,没事,我们直接就可以简单理解为是一种反射机制,即我们不需要知道具体的实现方,只要定义好接口,我们就能够在运行时找到一个实现接口的类,我们具体看一下官方定义. 举个例子 加入我是一个库设计者,我希望把一

  • Spring Boot详解五种实现跨域的方式

    目录 一.为什么会出现跨域问题 二.什么是跨域 三.非同源限制 四.java后端实现CORS跨域请求的方式 1. 返回新的CorsFilter(全局跨域) 2. 重写WebMvcConfigurer(全局跨域) 3. 使用注解 (局部跨域) 4. 手动设置响应头(局部跨域) 5. 使用自定义filter实现跨域 一.为什么会出现跨域问题 出于浏览器的同源策略限制.同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能

  • 利用Kotlin如何实现Android开发中的Parcelable详解

    坑 先来看看 Android Studio 给的自动实现. 新建一个数据类,让它实现 Parcelable data class Worker( var id: Int, var name: String, var tasks: MutableList<Int> ) : Parcelable 使用 Android Studio 自带的 Add Parcelable Implementation ,然后你就得到了... data class Worker( var id: Int, var na

  • Android开发之文件操作详解

    本文实例讲述了Android开发之文件操作.分享给大家供大家参考,具体如下: 目前,几乎所有的设备都会涉及到文件的操作,例如什么电脑,手机等设备.Android的文件操作和电脑是比较类似的,既可以存储在手机内置的存储器里也可以是sd卡.在这篇文章里主要介绍在手机内置存储器里的文件操作. 一. 开发流程 (1)界面的设计 (2)设计android的业务层 (3)单元测试 (4)设置android的控制器层 二. 开发步骤 (1)设计软件界面 <?xml version="1.0"

随机推荐