随着google开始主导Material Design风格的设计,越来越多的app开始使用Material Design风格来设计自己的UI。虽然在Android Studio中集成了多种快速开发框架,但是google始终没有推出自己的MD风格的dialog,为了能够在项目中快速开发MDDialog,我开源了一款自己开发的MDDialog,继承于Dialog,具有高度自由的定制属性。

项目地址:

https://github.com/Carbs0126/MDDialog

先上截图:

添加自定义view:

添加String[]:

主要特点:
1.使用与AlertDialog相同的builder构造方式,不需要改变编程习惯。
2.可以选择“显示/隐藏”顶部标题或者底部按钮。可以选择隐藏两个按钮或者某一个按钮。
3.使用setMessages(String[])方法,可以使用字符串数组为MDDialog添加多个item,同时可以setContentViewClickable设置item是否可点击,以及使用setOnItemClickListener(...)方法为item添加点击响应事件。
4.可以使用setContentView(...)方法为此dialog添加布局,其中传入的参数可以是布局id,也可以是view对象。
5.可以使用builder中的setContentViewOperator(new MDDialog.ContentViewOperator() {
@Override
public void operate(View contentView) {
//EditText et = (EditText) contentView.findViewById(R.id.edit0);
//et.setHint("hint set in operator");
}
})
方法,为添加的contentview添加一系列的操作,其中contentview是添加至MDDialog中的view

6.可以设置MDDialog的四角的半径
7.MDDialog为每个item设置准确的按下效果,包括圆角背景的按下效果。

Author:Carbs.Wang
Email:yeah0126#yeah.net

使用方法:

 创建 MDDialog 的两种方式
1.设置 customize view :
new MDDialog.Builder(ActivityMain.this)
// .setContentView(customizedView)
.setContentView(R.layout.content_dialog)
.setContentViewOperator(new MDDialog.ContentViewOperator() {
@Override
public void operate(View contentView) {
EditText et = (EditText) contentView.findViewById(R.id.edit0);
et.setHint("hint set in operator");
}
})
.setTitle("添加")
.setNegativeButton(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
})
.setPositiveButton(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
})
.setPositiveButtonMultiListener(new MDDialog.OnMultiClickListener() {
@Override
public void onClick(View clickedView, View contentView) {
EditText et = (EditText) contentView.findViewById(R.id.edit0);
Toast.makeText(getApplicationContext(), "edittext 0 : " + et.getText(), Toast.LENGTH_SHORT).show();
}
})
.setNegativeButtonMultiListener(new MDDialog.OnMultiClickListener() {
@Override
public void onClick(View clickedView, View contentView) {
EditText et = (EditText) contentView.findViewById(R.id.edit1);
Toast.makeText(getApplicationContext(), "edittext 1 : " + et.getText(), Toast.LENGTH_SHORT).show();
}
})
.setWidthMaxDp(600)
// .setShowTitle(false)//default is true
// .setShowButtons(true)//default is true
.create()
.show(); 2.设置 String[] messages final String[] messages = new String[]{"两个黄鹂鸣翠柳,一行白鹭上青天。",
"窗含西岭千秋雪,门泊东吴万里船。",
"君不见,黄河之水天上来,奔流到海不复回;君不见,高堂明镜悲白发,朝如青丝暮如雪。"};
new MDDialog.Builder(ActivityMain.this)
.setMessages(messages)
.setTitle("一首古诗")
.setNegativeButton(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
})
.setPositiveButton(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "positive", Toast.LENGTH_SHORT).show();
}
})
.setOnItemClickListener(new MDDialog.OnItemClickListener() {
@Override
public void onItemClicked(int index) {
Toast.makeText(getApplicationContext(), messages[index], Toast.LENGTH_SHORT).show();
}
})
.setWidthMaxDp(600)
.setShowTitle(false)
.setShowButtons(true)
.create()
.show();

引入:

dependencies {
compile 'cn.carbs.android:MDDialog:1.0.0'
}

项目地址:

https://github.com/Carbs0126/MDDialog

[原创]自定义view之:快速开发一款Material Design风格的dialog的开源项目MDDialog的更多相关文章

  1. SNF快速开发平台MVC-富文本控件集成了百度开源项目editor

    一.效果如下: 二.在框架当中调用代码如下: 1.在js里配置如下: <script type="text/javascript"> var viewModel =fu ...

  2. 自定义 Material Design风格的提示框

    关闭 自定义 Material Design风格的提示框 2016-04-24 10:55 152人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 其实在14年谷歌 ...

  3. Android开发实战之拥有Material Design风格的侧滑布局

    在实现开发要求中,有需要会使用抽屉式布局,类似于QQ5.0的侧滑菜单,实现的方式有很多种,可以自定义控件,也可以使用第三方开源库. 同样的谷歌也推出了自己的侧滑组件——DrawLayout,使用方式也 ...

  4. github上十二款最著名的Android播放器开源项目

    1.ijkplayer 项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Andr ...

  5. Android 自定义View修炼-Android开发之自定义View开发及实例详解

    在开发Android应用的过程中,难免需要自定义View,其实自定义View不难,只要了解原理,实现起来就没有那么难. 其主要原理就是继承View,重写构造方法.onDraw,(onMeasure)等 ...

  6. 创建Material Design风格Android应用--自定义阴影和裁剪视图

    之前已经写过通过应用主题和使用ListView, CardView,应用Material Design样式,同一时候都都能够通过support library向下兼容.今天要写的阴影和视图裁剪.无法向 ...

  7. 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例

    一.SlidingMenu简介 相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作.很多优秀的应用都采用了 ...

  8. 不会 Web 开发,也能让数据“动”起来的开源项目!

    本文面向有 Python 基础的小伙伴,有 Web 基础的更好 作者:HelloGitHub-吱吱 这里是 HelloGitHub 推出的<讲解开源项目>系列,今天要向小伙伴们介绍的是一个 ...

  9. Android开发实战之拥有Material Design风格的折叠布局

    关于折叠布局,也许你并不陌生,最新版的陌陌,或者一些其他的社交APP都有一个折叠布局.折叠布局,让我们的APP更加具有交互性,同时也更加美观,先来展示一下效果图: 这是我个人做的一个APP主界面,可以 ...

随机推荐

  1. [Phalcon-framework] Phalcon framework - Dependency Injection/Service Location And the MVC architecture note 1

    Registering services in the Container - We can easily replace a component with one created by oursel ...

  2. du -sg 和df -g 所看的文件系统大小不一致

    最近碰到一个问题: df -g 查看内存,发现空间已经满了,但是到对应目录查看,发现只用了一半的空间,感觉还有一半不见了. 经咨询其他人,给了两个解释: 1.fsck :使用Fsck命令修复损坏的分区 ...

  3. [ASE][Daily Scrum]11.13

    今天的计划如下: View Shilin Liu 修复残缺地图下的行进问题           Client Jiafan Zhu(回学校了) 和服务器端对接测试 Yiming Liao       ...

  4. zlib的安装

    wget http://www.zlib.net/zlib-1.2.8.tar.gz tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure mak ...

  5. 理解 Soap

    http://www.cnblogs.com/yhuang/archive/2012/04/04/share_storm.html 自己也写了下: using System; using System ...

  6. Spring AOP(配置文件方式)

    spring配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...

  7. 访问IIS元数据库失败解决方法

    问题:访问元数据失败 详细信息 访问 IIS 元数据库失败. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信 ...

  8. JavaScript this 总结(含 ES6)

    本文主要总结自<JavaScript 语言精粹>.部分总结自<JavaScript 高级程序设计>以及自己的经验 四种调用模式 在 JavaScript 中,this 的值取决 ...

  9. Linux asyn-io for socket

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h&g ...

  10. paip.语义相关是否可在 哈米 的语义分析中应用

    paip.语义相关是否可在 哈米 的语义分析中应用 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn. ...