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

至少我想找到曾经的记录都有了)。

第一个需求:简单的自定义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自定义实例详解相关推荐

  1. android平台下OpenGL ES 3.0实例详解顶点属性、顶点数组

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

  2. android 实现毫秒定时器,Android实现定时器的五种方法实例详解

    一.Timer Timer是Android直接启动定时器的类,TimerTask是一个子线程,方便处理一些比较复杂耗时的功能逻辑,经常与handler结合使用. 跟handler自身实现的定时器相比, ...

  3. mvc jquery ajax分页实例,jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解,mvcpagerajax分页...

    jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解,mvcpagerajax分页 简单的两个步骤即可实现分页功能 //回调里面进行业务处理 function lo ...

  4. java异常例子_java 异常的实例详解

    java 异常的实例详解 1.异常的定义:程序在运行时出现不正常情况. 异常的划分: Error:严重的问题,对于error一般不编写针对性的代码对其进行处理. Exception:非严重的问题,对于 ...

  5. Android Touch系统简介(二):实例详解onInterceptTouchEvent与onT

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEv ...

  6. 自定义控件android特效,Android自定义控件eBook实现翻书效果实例详解

    本文实例讲述了Android自定义控件eBook实现翻书效果的方法.分享给大家供大家参考,具体如下: 效果图: Book.java文件: package com.book; import androi ...

  7. android按钮防止重复点击事件,实例详解Android解决按钮重复点击问题

    为了防止用户或者测试MM疯狂的点击某个button,写个方法防止按钮连续点击.具体实例代码如下所示: public class BaseActivity extends Activity { prot ...

  8. android fragment传递数据,Android 两个Fragment之间传递数据实例详解

    Android 两个Fragment之间如何传递数据 FragmentA启动FragmentB,做一些选择操作后,返回FragmentA,需要把FragmentB里面选择的数据传回来.有什么办法? F ...

  9. python元组字典例子_python字典排序实例详解

    本文实例分析了python字典排序的方法.分享给大家供大家参考.具体如下: 1. 准备知识: 在python里,字典dictionary是内置的数据类型,是个无序的存储结构,每一元素是key-valu ...

  10. android系统息屏设置_Android亮屏和熄屏控制实例详解

    本文实例讲述了Android亮屏和熄屏控制实现方法.分享给大家供大家参考,具体如下: 一.概述 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那 ...

最新文章

  1. linux终端 多标签,Linux有问必答:如何在 Ubuntu 15.04 的 GNOME 终端中开启多个标签...
  2. 微软翻译突破百种语言和方言大关
  3. Access 字段拼接(UPDATE 数据追加)
  4. 爱之箭发射(las)
  5. Oracle 12C R2-新特性-转换函数的增强
  6. python读取excel写入mysql_python读取excel写入mysql
  7. java未知对象调用其某个方法_引用一个类的属性或调用其方法,必须以这个类的对象为前缀。...
  8. 关于imx8mp的es8316的芯片调试
  9. [LeetCode]347. 前 K 个高频元素
  10. Cocos Creator 开发微信小游戏 打包上线
  11. python是哪个国家的品牌,爬取全国12个热门城市奶茶店铺情况,看看你的城市哪个品牌最多...
  12. 课程教学c语言遇到的问题,C语言教学中的几点思考
  13. 域名过期后还能续费域名吗?
  14. 三菱PLC控制东芝4轴机器人程序,有完整的PLC程序带注释, 结构清楚,信捷触摸屏程序,电气图纸,东芝机械手程序,适合你学习应用,附赠东芝机器人编程软件,可以模拟运行。
  15. pandas学习笔记1—categories与set_categories
  16. Html5 jquery视频播放插件Video.js
  17. 二叉树 二叉树遍历 通过二叉树遍历求得二叉树
  18. 递归、分治算法刷题笔记
  19. sdoi2009 [动态规划 状态压缩DP] 学校食堂
  20. 我的世界服务器领地系统,我的世界服务器怎么创建领地

热门文章

  1. router vue 动态改变url_vue里router-link标签设置动态路由的3个方法
  2. 2016年《大数据》高被引论文Top10
  3. 作者:孟磊,山东省农业信息中心助理农经师。
  4. JAVA——附加作业3——订阅报刊杂志
  5. 如何提高web应用的响应速度(性能)
  6. Nginx系列--01基本架构及其安装
  7. Ansible一键部署CDH
  8. MetaModelEngine:域模型定义
  9. 这些解决 Bug 的套路,你都会了不?
  10. 优化了破网站的搜索功能