现在很多应用程序的提示对话框都很有个性的,如果你使用的对话框样子还是传统的对话框,是不是有点LOST了呢?今天爱站技术频道小编就给大家讲讲详解android dialog自定义实例。

第一个需求:简单的自定义dialog

需求:创建一个dialog,该dialog具备以下功能:

1.有一个窗口可以显示文章

2.根据需求显示

1)点击同意(不同意),触发对应的事件(同意的事件会弹出一个Toast,不同意则会关闭程序)

2)点击关闭,关闭dialog

1.在main.xml文件中设定一个按钮,点击会弹出dialog

复制代码 代码如下:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:layout_width="100dp"

android:layout_height="50dp"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:text="@string/hello_world"

android:id="@+id/btn"

android:background="@drawable/sl_btn_red" />

2.创建dialog的内容布局,布局中设定了使用相对布局设定了三个按钮,其中两个一起出现(同意和不同意),另外一个单独出现(关闭)默认是两个出现

复制代码 代码如下:

private TextView btnClose = null;

private TextView btnAgree = null;

private TextView btnDisagree = null;

private WebView mWebView = null;

public MyDialog(Context context) {

super(context, R.style.item_tnc_dialog);

setCancelable(false); // 阻止返回键的响应

setContentView(R.layout.dialog_view);

getWindow().setLayout(LayoutParams.MATCH_PARENT,

LayoutParams.MATCH_PARENT);

setUpView();

}

private void setUpView() {

mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);

btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);

btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);

btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);

btnClose.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

dismiss();

}

});

btnDisagree.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

dismiss();

System.exit(0);

}

});

btnAgree.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(getContext(), "YOU SELECTED AGREE",

Toast.LENGTH_SHORT).show();

dismiss();

}

});

showDialog();

}

/** 加载webview的内容 */

public void showDialog() {

String localHtml = "file:///android_asset/los.html";

if (mWebView != null) {

mWebView.getSettings().setDefaultTextEncodingName("utf-8");

mWebView.loadUrl(localHtml);

}

buttonsDisplayTwo(false);

}

/** 当true的时候,出现同意和不同意两个选项,反之是关闭选项 */

private void buttonsDisplayTwo(boolean two) {

btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);

btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);

btnClose.setVisibility(two ? View.GONE : View.VISIBLE);

}

3.main.activity的代码就不写了。。直接写自定义的dialog代码

复制代码 代码如下:

private TextView btnClose = null;

private TextView btnAgree = null;

private TextView btnDisagree = null;

private WebView mWebView = null;

public MyDialog(Context context) {

super(context, R.style.item_tnc_dialog);

setCancelable(false); // 阻止返回键的响应

setContentView(R.layout.dialog_view);

getWindow().setLayout(LayoutParams.MATCH_PARENT,

LayoutParams.MATCH_PARENT);

setUpView();

}

private void setUpView() {

mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);

btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);

btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);

btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);

btnClose.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

dismiss();

}

});

btnDisagree.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

dismiss();

System.exit(0);

}

});

btnAgree.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(getContext(), "YOU SELECTED AGREE",

Toast.LENGTH_SHORT).show();

dismiss();

}

});

showDialog();

}

/** 加载webview的内容 */

public void showDialog() {

String localHtml = "file:///android_asset/los.html";

if (mWebView != null) {

mWebView.getSettings().setDefaultTextEncodingName("utf-8");

mWebView.loadUrl(localHtml);

}

buttonsDisplayTwo(false);

}

/** 当true的时候,出现同意和不同意两个选项,反之是关闭选项 */

private void buttonsDisplayTwo(boolean two) {

btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);

btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);

btnClose.setVisibility(two ? View.GONE : View.VISIBLE);

}

以上就是详解android dialog自定义实例的介绍,更多内容请继续关注爱站技术频道!

android dialog 详解,详解android dialog自定义实例相关推荐

  1. android自定义dialog 例子,android dialog自定义实例详解

    本人工作有一个月多了.对于android很多东西,都有了新的了解或者说真正的掌握.为了让更多的像我这样的小白少走弯路,所以我会坚持将我在工作中遇到的一些比较令我印象深刻的知识点整合出来给大家(顺序是按 ...

  2. Android应用坐标系统全面详解

    Android应用坐标系统全面详解 原文链接:CSDN@工匠若水,http://blog.csdn.net/yanbober/article/details/50419117 1. 背景 去年有很多人 ...

  3. 【Android】 Android中Log调试详解

    LOG类: public final class Log extends Object java.lang.Object   android.util.Log Constants int ASSERT ...

  4. 宏锦软件 Android 的 ListView 使用详解

     宏锦软件爱好者在开发Android软件时,对ListView的使用有点陌生,于是翻了许多资料,这里给大家一份比较好的教程,希望有用. 在android开发中ListView是比较常用的组件,它以 ...

  5. Android App启动流程详解

    前言:在之前的文章中已经写了apk的打包流程.安装流程,今天就是梳理一下apk系列的最后的流程--app启动流程.经过今天的梳理以后咱们就可以对apk包是怎么编译生成的.apk是怎么被安装到安卓手机的 ...

  6. Android WebView(一) WebView详解

    WebView,在Android开发中,我们总是会遇到,它是Google封装的,使用WebKit渲染引擎加载显示网页.接下来,我们就详细看看WebView的介绍以及使用.如果你想了解WebView主要 ...

  7. 《Android NFC开发实战详解》——6.4节Android NFC P2P开发进阶

    本节书摘来自异步社区<Android NFC开发实战详解>一书中的第6章,第6.4节Android NFC P2P开发进阶,作者 赵波,更多章节内容可以访问云栖社区"异步社区&q ...

  8. Android自定义控件进阶13-MotionEvent详解

    Android MotionEvent 详解,之前用了两篇文章 事件分发机制原理 和 事件分发机制详解 来讲解事件分发,而作为事件分发主角之一的 MotionEvent 并没有过多的说明,本文就带大家 ...

  9. Android Activity 生命周期详解及监听

    前言 系列文章: Android Activity 与View 的互动思考 Android Activity 生命周期详解及监听 Android onSaveInstanceState/onResto ...

最新文章

  1. 在Linux 下配置PHP 支援GD
  2. 数据库内核杂谈 - 一小时实现一个基本功能的数据库
  3. 回溯法模板(矩阵中操作)
  4. Spring MVC + Hibernate + Maven:CRUD操作示例
  5. BootStrap笔记-栅格系统
  6. python 读取合并单元格 视频_Python如何使用xlrd实现读取合并单元格
  7. linux内核中读写文件
  8. 十九、K8s集群设置1- kube-bench
  9. FMX控件演示(FireMonkey ControlsDemo)
  10. Android ExoPlayer播放音视频的使用指南
  11. Spring初窥门径
  12. 上万元游戏拼多多7块搞定 PICO防不住
  13. 【娱见】乐视开始折腾路由器,小米与极路由还会好过吗?
  14. 【今晚7点】:如何借助Google Cloud在海外部署音视频业务?
  15. 一文带你浅入浅出Keepalived
  16. nginx部署vue项目,给访问路径加前缀
  17. 现代化物流对应术语解释
  18. VMotion and Storage VMotion
  19. [NOIP赛前冲刺第一期]初赛基础知识归纳
  20. 2017云栖大会门票转让_2017云栖大会门票多少钱?

热门文章

  1. 持续集成工具hudson
  2. [书目20090503]time power 时间力 作者(美国)(brian tracy)博恩.崔西
  3. xenserve使用ISOr创建VM
  4. Mysql锁(表级锁,页级锁,行级锁)
  5. 进程和线程有什么区别?
  6. 理解ROC曲线,TPR与FPR
  7. 数据库入库的方式实现
  8. JavaSwing_1.2: GridLayout(网格布局)
  9. 安利下这个库,解放你左手
  10. Linux终端文件夹管理员,如何在Ubuntu 18.04中以管理员权限打开文件和文件夹