[原创]自定义view之:快速开发一款Material Design风格的dialog的开源项目MDDialog
随着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
最新文章
- jQuery MiniUI开发系列之:使用API文档
- ACM 奋斗的小蜗牛
- 如何解决mysql stop fail的问题
- HDU-4614 Vases and Flowers (线段树区间更新)
- ASCII码排序
- mac terminal终端ls命令参数详解
- .NET异步操作学习之一:Async/Await中异常的处理
- -_-#【Better JS Code】插入迭代值
- oracle 随Linux系统启动自启动设置
- PhpStorm 10.0 激活方式
- JavaConcurrentHashMap
- 读书笔记 effective c++ Item 39 明智而谨慎的使用private继承
- Masonry 在swift下的使用
- Github从注册到上传本地项目详解!!!
- HDU5137 删点 最短路
- Java集合-ArrayList源码解析-JDK1.8
- 字符串匹配(二)----KMP算法
- redis php操作命令
- Visual Studio Code 如何将新项目发布到GIT服务器
- python语法之正则
热门文章
- How to change drive in cygwin
- 配置ubuntu 14.04.3 LTS odoo 9.0开发环境
- 一步一步搭建客服系统 (2) 如何搭建SimpleWebRTC信令服务器
- 困扰多日的C#调用Haskell问题竟然是Windows的一个坑
- [WinAPI] API 8 [获取磁盘空间信息]
- javascript跨域通信(一):利用location.hash实现跨域iframe自适应
- web app 禁用手机浏览器缓存方法
- [读书笔记]C#学习笔记六: C#3.0Lambda表达式及Linq解析
- django with mysql (part-2)
- atitit.编辑表单的实现最佳实践dwr jq easyui