1. compile 'com.orhanobut:dialogplus:1.11@aar'

简介

Dialogplus是一个非常简单易用的Dialog对话框控件,但是这并不是一个Dialog或AlertDialog或DialogFragment的衍生类,而是通过DecorView进行插入,所以他是一个阻塞式的窗口,也就是说这个Dialog一打开,其他控件就接收不到焦点了。

Advanced dialog solution for android

DialogPlus provides 3 content types:
  • ListHolder : Items will be shown in a listview
  • GridHolder : Items will be shown in a gridview
  • ViewHolder : Your customized view will be shown in the content

API说明

  • newDialog(Context context) 创建dialog
  • setContentHolder(Holder holder) 设置holder,必要
    • setContentHolder(new ViewHolder(int layoutId或View)):Use ViewHolder as content holder if you want to use a custom view for your dialog.
    • setContentHolder(new ListHolder()):Use ListView as content holder, note that this is default content type.
    • setContentHolder(new GridHolder(COLUMN_NUMBER)):Use GridHolder if you want to use GridView for the dialog. You must set column number.
  • setContentWidth(int width) 宽,可设置为ViewGroup.LayoutParams.WRAP_CONTENT等。Set width and height for the content
  • setContentHeight(int height) 高。Set width and height for the content
  • setHeader(int resourceId) 头的布局或View。Set the header view using the id of the layout resource
  • setFooter(int resourceId)     尾的布局或View。Set the footer view using the id of the layout resource
  • setGravity(int gravity) 设置dialog的位置。android.view.Gravity中定义的位置常量都可以使用。
  • setExpanded(boolean expanded) 是否可扩展,默认是false,仅适用于ListView和GridView。Enable expand animation same as Android L share dialog。default is false, only works for grid and list
  • setExpanded(true, 300)    是否可扩展以及默认高度(defaultContentHeight)。Set expand animation default height
  • setCancelable(boolean isCancelable) 点击外部区域是否可以取消dialog。Define if the dialog is cancelable and should be closed when back pressed or out of dialog is clicked
  • setAdapter(BaseAdapter adapter) ListView或GridView时使用的adapter,ViewHolder不需要。Set Adapter, this adapter will be used to fill the content for ListHolder and GridHolder. This is required if the content holder is ListHolder or GridHolder. It is not required if the content holder is ViewHolder.
  • setOnItemClickListener(OnItemClickListener listener) ListView或GridView的item的点击事件。Set an item click listener when list or grid holder is chosen. In that way you can have callbacks when one of your items is clicked
  • setOnClickListener(OnClickListener listener) 点击事件。Set a global click listener to you dialog in order to handle all the possible click events. You can then identify the view by using its id and handle the correct behaviour. Only views which has id will trigger this event.
  • setOnDismissListener(OnDismissListener listener):Dismiss Listener, triggered when the dialog is dismissed
  • setOnCancelListener(OnCancelListener listener):Cancel Listener, triggered when the dialog is cancelled by back button or clicking outside
  • setOnBackPressListener(OnBackPressListener listener):BackPress Listener, triggered when the back button is pressed
  • getHolderView() 获取视图View。Get the holder view, ListView, GridView or your custom view
  • getHeaderView() 获取头布局。Get the header view
  • getFooterView() 获取尾布局。Get the footer view
  • setMargin(left, top, right, bottom):Add margins to your dialog. They are set to 0 except when gravity is center. In that case basic margins are applied
  • setOutMostMargin(left, top, right, bottom):Add margins to your outmost view which contains everything. As default they are 0 are applied
  • setPadding(left, top, right, bottom):Set padding to the holder
  • setInAnimation(R.anim.abc_fade_in) 进入动画。Set animation resources
  • setOutAnimation(R.anim.abc_fade_out)     移除动画。Set animation resources
  • setContentBackgroundResource(resource) dialog的背景色。Change content container background, as default white
  • setOverlayBackgroundResource(resource) dialog以外的背景色。Change overlay container background, as default it's semi-transparent black

案例

  1. public class MainActivity extends ListActivity {
  2. private boolean expanded = false;
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. String[] array = {"DialogPlus官方demo",
  6. "ViewHolder,BOTTOM",
  7. "ViewHolder,TOP",
  8. "ListHolder,ArrayAdapter,CENTER",
  9. "ListHolder,自定义Adapter,【CENTER_HORIZONTAL】",
  10. "GridHolder,自定义Adapter,CENTER_VERTICAL",};
  11. setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>(Arrays.asList(array))));
  12. }
  13. @Override
  14. protected void onListItemClick(ListView l, View v, int position, long id) {
  15. expanded = !expanded;
  16. switch (position) {
  17. case 0:
  18. startActivity(new Intent(this, DialogPlusActivity.class));
  19. break;
  20. case 1:
  21. showDialogPlus(new ViewHolder(R.layout.content), null, Gravity.BOTTOM, expanded);
  22. break;
  23. case 2:
  24. showDialogPlus(new ViewHolder(R.layout.content2), null, Gravity.TOP, expanded);
  25. break;
  26. case 3:
  27. String[] array = new String[]{"包青天", "白乾涛", "baiqiantao", "0909082401"};
  28. showDialogPlus(new ListHolder(), new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, array)
  29. , Gravity.CENTER, expanded);
  30. break;
  31. case 4:
  32. showDialogPlus(new ListHolder(), new SimpleAdapter(this, false), Gravity.CENTER_HORIZONTAL, expanded);
  33. break;
  34. case 5:
  35. showDialogPlus(new GridHolder(3), new SimpleAdapter(this, true), Gravity.CENTER_VERTICAL, expanded);
  36. break;
  37. }
  38. }
  39. private void showDialogPlus(Holder holder, BaseAdapter adapter, int gravity, boolean expanded) {
  40. DialogPlusBuilder builder = DialogPlus.newDialog(this)
  41. .setContentHolder(holder)//必须设置,ViewHolder或ListHolder或GridHolder
  42. .setGravity(gravity)//支持三种:BOTTOM (default), TOP or CENTER
  43. .setExpanded(expanded, 600)//是否可扩展。setExpanded(true)
  44. .setCancelable(true)
  45. .setMargin(0, 100, 0, 0)//Add margins to your dialog. They are set to 0 except when gravity is center.
  46. .setOutMostMargin(0, 0, 0, 0)//Add margins to your outmost view which contains everything. 默认为0
  47. .setContentWidth(700)
  48. .setContentHeight(ViewGroup.LayoutParams.WRAP_CONTENT)
  49. .setContentBackgroundResource(R.drawable.corner_background)
  50. .setOverlayBackgroundResource(android.R.color.holo_blue_light)
  51. .setInAnimation(com.orhanobut.dialogplus.R.anim.fade_in_center)//slide_in_top、slide_in_bottom、fade_in_center
  52. .setOutAnimation(com.orhanobut.dialogplus.R.anim.fade_out_center)
  53. .setOnClickListener((dialog, view) -> Toast.makeText(this, "onClick", Toast.LENGTH_SHORT).show())
  54. .setOnItemClickListener((dialog, item, view, position) -> Toast.makeText(this, "onItemClick," + position, 0).show())
  55. .setOnDismissListener(dialog -> Toast.makeText(this, "onDismiss", Toast.LENGTH_SHORT).show())
  56. .setOnCancelListener(dialog -> Toast.makeText(this, "onCancel", Toast.LENGTH_SHORT).show())
  57. .setOnBackPressListener(dialogPlus -> Toast.makeText(this, "onBackPressed", Toast.LENGTH_SHORT).show());
  58. if (adapter != null) builder.setAdapter(adapter);//ListView或GridView时使用的adapter,ViewHolder不需要
  59. if (new Random().nextBoolean()) builder.setHeader(R.layout.header);
  60. if (new Random().nextBoolean()) builder.setFooter(R.layout.footer);
  61. builder.create().show();
  62. }
  63. }
2017-6-16

DialogPlus的更多相关文章

  1. 用backbone实现的一个MVC的小demo

    一.Apache配置 本实例需要使用php支持.要现在Apache中配置虚拟目录,在Apache下的httpd-vhosts.conf文件中添加如下代码 <VirtualHost *:80> ...

  2. Android开源项目分类汇总

    目前包括: Android开源项目第一篇——个性化控件(View)篇   包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...

  3. 59.Android开源项目及库 (转)

    转载 : https://github.com/Tim9Liu9/TimLiu-Android?hmsr=toutiao.io&utm_medium=toutiao.io&utm_so ...

  4. Android主流UI开源库整理(转载)

    http://www.jianshu.com/p/47a4a7b99364 标题隐含了两个层面的意思,一个是主流,另一个是UI.主流既通用,一些常规的按钮.Switch.进度条等控件都是通用控件,因此 ...

  5. [转]artDialog

    本文转自:http://aui.github.io/artDialog/ http://aui.github.io/artDialog/doc/index.html artDialog —— 经典的网 ...

  6. artDialog 文档

    artDialog —— 经典.优雅的网页对话框控件. 支持普通与 12 方向气泡状对话框 完善的焦点处理,自动焦点附加与回退 支持 ARIA 标准 面向未来:基于 HTML5 Dialog 的 AP ...

  7. Android 开源项目分类汇总(转)

    Android 开源项目分类汇总(转) ## 第一部分 个性化控件(View)主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Galler ...

  8. android UI库

    https://github.com/wasabeef/awesome-android-ui List of Android UI/UX Libraries A curated list of awe ...

  9. Android 开源项目分类汇总

    Android 开源项目分类汇总 Android 开源项目第一篇——个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView ...

随机推荐

  1. shell 规范

    代码风格规范 开头有“蛇棒” 所谓shebang其实就是在很多脚本的第一行出现的以”#!”开头的注释,他指明了当我们没有指定解释器的时候默认的解释器,一般可能是下面这样: #!/bin/bash 当然 ...

  2. myeclipse 插件下载方式

    myeclipse10,大家都知道,MyEclipse 中有一个烦人的 Software and Workspace center,这东西,加载特别慢,我用10版本基本是没有可能看到这个界面.更别说在 ...

  3. 使用multiprocessing中的常见问题

    在python的解释器中,CPython是应用范围最广的一种,其具有丰富的扩展包,方便了开发者的使用.当然CPython也不是完美的,由于全局解释锁(GIL)的存在,python的多线程可以近似看作单 ...

  4. django中两张表有外键关系的相互查找方法,自定义json编码方法

    两张通过外键联系的表,如何在一张表上根据另一张表上的属性查找满足条件的对象集? 平常查找表中数据的条件是python中已有的数据类型,通过名字可以直接查找.如果条件是表中外键列所对应表的某一列,该如何 ...

  5. IIS Server Farms入门

    概念了解 IIS Server Farms,实际上应该叫“Microsoft Web Farm Framework (WFF)”,依赖于“Web Platform Installer”才能安装,依赖于 ...

  6. 选择排序之Java实现

    选择排序之Java实现 一.方法一 package cn.com.zfc.lesson21.sort; /** * * @title SelectSort * @describe 选择排序 * @au ...

  7. 【20181103T2】图【结论+bfs最短路】

    一眼最短路 --感觉是个结论啊 建超级源汇? 什么鬼 合并ab和cd? 不一样的吗 开始想的至少有一条路径是最短路 然后发现不对: 开始对着这个图瞎想 从B开始找A的最短路,然后把到B小于等于的边赋成 ...

  8. BZOJ 1528 [POI2005]sam-Toy Cars(优先队列)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1528 [题目大意] 地上最多可以放k个玩具,现在给出需求顺序, 问最少需要去架子上拿几 ...

  9. JAVA基础(一) ——— static 关键字

    1.  静态代码块 保证只创建一次,提升属性的级别为类变量.初始化后独自占用一块内存 2.  静态代码块执行触发条件 (1).当创建这个类的实例 (2).当调用这个类的静态变量 (3).当调用这个类的 ...

  10. Codeforces Round #358 (Div. 2) D. Alyona and Strings dp

    D. Alyona and Strings 题目连接: http://www.codeforces.com/contest/682/problem/D Description After return ...