万能的dialog库(包括类似popwindow效果)
博主最近发现了一个万能的dialog库
一、目前这个库具有的主要功能如下:
material风格(v7支持包中的),ios风格,自动获取顶层activity,可在任意界面弹出,可在任意线程弹出。(也就是说安卓也可以实现ios风格的dialog,666,是不是吊炸天呢?博主再也不会被ios哥们嘲笑了。博主也可以轻松实现它们系统dialog的效果)
二、先看一下1.1.5版本的特性:
★ loading对话框和ios风格的dialog传入context和activity均可弹出dialog.
★ 样式包括常用的ios风格dialog和meterial design风格的dialog.
★ 自定义样式:可以传入自定义的view,定义好事件,本工具负责显示
★ 考虑了显示内容超多时的滑动和与屏幕的间隙.
三、使用前的导包:
步骤1.将JitPack存储库添加到您的构建文件中
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
步骤2.添加依赖关系
dependencies {
compile 'com.github.hss01248:DialogUtil:1.1.5'
}
最新版本请看这里的版本是多少,就写多少:
https://github.com/hss01248/DialogUtil/releases
四、初始化
![](https://img.haomeiwen.com/i6098829/6b8e1a9e93e752cc.png)
五、示例代码(比如在MainActivity里面)
以下代码是模仿ios的dialog风格(布局里面定义一个button就行了),运行图如下图:
![](http://upload-images.jianshu.io/upload_images/6098829-2a0d669e02b24b9e.png)
代码如下:
![](http://upload-images.jianshu.io/upload_images/6098829-326e9d0204cc1cce.png)
六、相关回调源码解析
MyDialogListener源码解释:
![](http://upload-images.jianshu.io/upload_images/6098829-e28cc23694c695ca.png)
MyItemDialogListener源码解释:
![](http://upload-images.jianshu.io/upload_images/6098829-7451aac6768503bf.png)
七、不同样式加载使用方法
(1)ios样式的加载
buildLoading( )
buildLoading( CharSequence msg)
updateLoadingMsg(final String msg)//更新msg
![](http://upload-images.jianshu.io/upload_images/6098829-907c0b3e819c5157.png)
(2)android样式的加载
buildMdLoading( )
buildMdLoading( CharSequence msg)
updateLoadingMsg(final String msg)//更新msg
![](http://upload-images.jianshu.io/upload_images/6098829-fd35b795dc4dd764.png)
(3)ProgressDialog的水平
buildProgress( CharSequence msg,boolean isHorizontal)
//更新进度
updateProgress(final Dialog dialog, final int progress, final int max, final CharSequence msg, final boolean isHorizontal)
![](http://upload-images.jianshu.io/upload_images/6098829-71b190f330214fee.png)
(4)ProgressiveDialog of Spinner,用文字显示的进度(自动计算):
![](http://upload-images.jianshu.io/upload_images/6098829-6b95d46761965bd8.png)
(5)Appcompat-v7的AlertDialog
1)buildMdAlert( CharSequence title, CharSequence msg, MyDialogListener listener)
![](http://upload-images.jianshu.io/upload_images/6098829-2b5fae9049abc73d.png)
2)buildMdSingleChoose( CharSequence title, int defaultChosen, CharSequence[] words, MyItemDialogListener listener)
![](http://upload-images.jianshu.io/upload_images/6098829-7bfcd6c74fd8cce4.png)
3)buildMdMultiChoose( CharSequence title, CharSequence[] words, List selectedIndexs, MyDialogListener btnListener)
![](http://upload-images.jianshu.io/upload_images/6098829-9427f0739a35a5e1.png)
(6)IOS风格(含按下效果)
1)buildIosAlert( CharSequence title, CharSequence msg, MyDialogListener listener)
![](http://upload-images.jianshu.io/upload_images/6098829-b78b2865bc4ad781.png)
2)buildIosAlertVertical( CharSequence title, CharSequence msg, MyDialogListener listener)
![](http://upload-images.jianshu.io/upload_images/6098829-673778cec929f598.png)
3)buildNormalInput( CharSequence title, CharSequence hint1,
CharSequence hint2,CharSequence firstTxt, CharSequence secondTxt, MyDialogListener listener)
![](http://upload-images.jianshu.io/upload_images/6098829-7dc19c75c2f20e0f.png)
4)buildIosSingleChoose( List words, MyItemDialogListener listener)
![](http://upload-images.jianshu.io/upload_images/6098829-5011a3f622f4e9e8.png)
5)buildBottomItemDialog( List words, CharSequence bottomTxt, MyItemDialogListener listener)
![](http://upload-images.jianshu.io/upload_images/6098829-52687be790baaa58.png)
(7)BottomSheetDialog的设计
1)buildBottomSheetLv(CharSequence title, List datas, CharSequence bottomTxt, MyItemDialogListener listener)
![](http://upload-images.jianshu.io/upload_images/6098829-1229ddeda5e0fa61.png)
2)buildBottomSheetGv( CharSequence title, List datas, CharSequence bottomTxt, int columnsNum ,MyItemDialogListener listener)
![](http://upload-images.jianshu.io/upload_images/6098829-12bec58d86bcffc9.png)
(8)GridView中拉出来时:
![](http://upload-images.jianshu.io/upload_images/6098829-80caab2f295e0416.png)
(9)弹出自己定义的一个视图:(示例图中有一个网页视图)
ViewGroup customView = (ViewGroup) View.inflate(this,R.layout.customview,null);
final ConfigBean bean = StyledDialog.buildCustom(customView, Gravity.CENTER);
final Dialog dialog1 = bean.show();
![](http://upload-images.jianshu.io/upload_images/6098829-3d7324eb3d874ded.png)
github地址如下:
https://github.com/glassLake/DialogUtils(这个库已经停止更新)请移步下面这个库:
https://github.com/hss01248/DialogUtil (博主目前使用的是1.1.5版本)