我的编程空间,编程开发者的网络收藏夹
学习永远不晚

浅析Android中强大的Dialog

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

浅析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 {
   
 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);
       
        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);
       
    }
    //定义一个公共方法,弹出消息
    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("进度条窗口");
   &n bsp;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="单选框"
 &nbs p;  />
     <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自定义实例详解Android开发笔记之:Dialog的使用详解Android ProgressBar进度条和ProgressDialog进度框的展示DEMOAndroid Dialog 设置字体大小的具体方法Android入门之AlertDialog用法实例分析Android自定义ProgressDialog进度等待框android dialog边框去除白色边框实现思路及代码Android 对话框(Dialog)大全示例(建立你自己的对话框)


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

浅析Android中强大的Dialog

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

浅析Android中强大的Dialog

Android中经常会使用到Dialog(弹出框效果),而且功能非常强大,可以模拟出N种弹出框效果。如图所示:下面将通过一个小实例,来像大家展示Android中功能强大的Dialog。代码都写了详细的注释,读者不妨试着手动去敲。 当然,由于
2022-06-06

Android中的序列化浅析

序列化原因 序列化的原因基本可以归纳为以下三种情况: 1.永久性保存对象,保存对象的字节序列到本地文件中; 2.对象在网络中传递; 3.对象在IPC间传递。 序列化方法 在Android系统中关于序列化的方法一般有两种,分别是实现Seria
2022-06-06

浅析Android中的visibility属性

Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为“visible ”、“invisible”、“gone”。主要用来设置控制控件的显示和隐藏。1) 可见(visible)XML文件:android:vis
2022-06-06

深入浅析Android中的AsyncTask

这篇文章给大家介绍深入浅析Android中的AsyncTask,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、Asynctask简介1.1 使用方法简介Asynctask作为Android的基础之一,怎么使用就不多讲
2023-05-31

浅析android中的线程封装

简单写一下android 对线程 的c++封装~~~其实API已经写得很清楚了~~ 封装 的文件 :/frameworks/base/include/utils/threads.h 这里不讨论具体实现,具体实现是和系统 相关联的~~首先An
2022-06-06

Android中handler使用浅析

1. Handler使用引出 现在作为客户,有这样一个需求,当打开Activity界面时,开始倒计时,倒计时结束后跳转新的界面(思维活跃的朋友可能立马想到如果打开后自动倒计时,就类似于各个APP的欢迎闪屏页面),如下图:作为初学者,可能觉得
2022-06-06

详解Android中Dialog的使用

在Android中经常要使用Dialog来实现一些提示以及一些特殊的效果,而且样式也不一样,每次都得查一大堆资料,还不一定能解决,这里总结一些常用的Dialog的实践。 普通的Dialog//普通的AlertDialog对话框 findVi
2022-06-06

浅析Android 的 MediaPlayer类

在Android中通常用MediaPlayer来播放一些媒体文件,对于音频文件来说只需直接使用MeidaPlayer结合几句代码即可,但是对于视频文件来说稍微复杂一些。单独的MediaPlayer只能播放音频文件,要想播放视频还需要Surf
2022-06-06

Android如何实现自定义Dialog的大小

小编给大家分享一下Android如何实现自定义Dialog的大小,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:Android应用开发中,无论是出于功能还
2023-05-30

html5.2中dialog的示例分析

这篇文章主要为大家展示了“html5.2中dialog的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5.2中dialog的示例分析”这篇文章吧。2017年12月24号, HTM
2023-06-09

Android中WebChromeClient和WebViewClient的区别浅析

1、WebViewClient就是帮助WebView处理各种通知、请求事件的,具体来说包括:onLoadResource 、onPageStart 、onPageFinish 、onReceiveError 、onReceivedHttpA
2022-06-06

Android Dialog 设置字体大小的具体方法

先看下面图片:这是我在做登录页面的时候,调用系统的ProgressDialog 进行等待,可是看起来很不协调,左边的等待图片过大,右边文字过小,看起来老别扭,虽然功能上不存在什么问题,但是我有强迫症,看不顺的就像弄掉。可是找了好久,没发现
2022-06-06

Android中Dialog去黑边的方法

本文实例展示了Android中Dialog去黑边的方法。并且分为保留阴影与不保留阴影两种实现方法。供大家参考借鉴。具体实现方法如下: 1.不保留阴影 代码如下: <
2022-06-06

Android编程自定义Dialog的方法分析

本文实例讲述了Android编程自定义Dialog的方法。分享给大家供大家参考,具体如下: 功能: android 提供给我们的只有2种Dialog 即 AlertDialog & ProgressDialog 但是 Dialog 有其自身
2022-06-06

深入浅析Android中的消息机制

本篇文章给大家分享的是有关深入浅析Android中的消息机制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、简介Android的消息机制主要是指Handler的运行机制,那么
2023-05-31

Dialog中Android应用中的使用方法

Dialog中Android应用中的使用方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android开发中最常用的就是Dialog类,除了自定义dialog
2023-05-31

深入浅析Android中的NestedScrolling滑动机制

深入浅析Android中的NestedScrolling滑动机制?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1,如今NestedScrolling运用到很多地方了,要想好
2023-05-31

深入浅析Android中View的绘制流程

深入浅析Android中View的绘制流程?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。从performDraw说起三大工作流程始于ViewRootImpl#p
2023-05-31

深入浅析Android中的ListView复用机制

这篇文章给大家介绍深入浅析Android中的ListView复用机制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.ListView的复用机制 ListView是我们经常使用的一个控件,虽然说都会用,但是却并不一定
2023-05-31

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录