• [原创]自定义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

    使用方法:

     1 创建 MDDialog 的两种方式
     2   1.设置 customize view :
     3   new MDDialog.Builder(ActivityMain.this)
     4 //              .setContentView(customizedView)
     5                 .setContentView(R.layout.content_dialog)
     6                 .setContentViewOperator(new MDDialog.ContentViewOperator() {
     7                   @Override
     8                   public void operate(View contentView) {
     9                     EditText et = (EditText) contentView.findViewById(R.id.edit0);
    10                     et.setHint("hint set in operator");
    11                   }
    12                 })
    13                 .setTitle("添加")
    14                 .setNegativeButton(new View.OnClickListener() {
    15                   @Override
    16                   public void onClick(View v) {
    17                   }
    18                 })
    19                 .setPositiveButton(new View.OnClickListener() {
    20                   @Override
    21                   public void onClick(View v) {
    22                   }
    23                 })
    24                 .setPositiveButtonMultiListener(new MDDialog.OnMultiClickListener() {
    25                   @Override
    26                     public void onClick(View clickedView, View contentView) {
    27                       EditText et = (EditText) contentView.findViewById(R.id.edit0);
    28                       Toast.makeText(getApplicationContext(), "edittext 0 : " + et.getText(), Toast.LENGTH_SHORT).show();
    29                     }
    30                   })
    31                 .setNegativeButtonMultiListener(new MDDialog.OnMultiClickListener() {
    32                   @Override
    33                   public void onClick(View clickedView, View contentView) {
    34                     EditText et = (EditText) contentView.findViewById(R.id.edit1);
    35                     Toast.makeText(getApplicationContext(), "edittext 1 : " + et.getText(), Toast.LENGTH_SHORT).show();
    36                   }
    37                 })
    38                 .setWidthMaxDp(600)
    39 //              .setShowTitle(false)//default is true
    40 //              .setShowButtons(true)//default is true
    41                 .create()
    42               .show();
    43 
    44     2.设置 String[] messages
    45 
    46     final String[] messages = new String[]{"两个黄鹂鸣翠柳,一行白鹭上青天。",
    47                 "窗含西岭千秋雪,门泊东吴万里船。",
    48                 "君不见,黄河之水天上来,奔流到海不复回;君不见,高堂明镜悲白发,朝如青丝暮如雪。"};
    49     new MDDialog.Builder(ActivityMain.this)
    50                         .setMessages(messages)
    51                         .setTitle("一首古诗")
    52                         .setNegativeButton(new View.OnClickListener() {
    53                             @Override
    54                             public void onClick(View v) {
    55                             }
    56                         })
    57                         .setPositiveButton(new View.OnClickListener() {
    58                             @Override
    59                             public void onClick(View v) {
    60                                 Toast.makeText(getApplicationContext(), "positive", Toast.LENGTH_SHORT).show();
    61                             }
    62                         })
    63                         .setOnItemClickListener(new MDDialog.OnItemClickListener() {
    64                             @Override
    65                             public void onItemClicked(int index) {
    66                                 Toast.makeText(getApplicationContext(), messages[index], Toast.LENGTH_SHORT).show();
    67                             }
    68                         })
    69                         .setWidthMaxDp(600)
    70                         .setShowTitle(false)
    71                         .setShowButtons(true)
    72                         .create()
    73                       .show();

    引入:

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

    项目地址:

    https://github.com/Carbs0126/MDDialog

  • 相关阅读:
    692. 前K个高频单词
    准备工作:更新代码和运行环境
    1319. 连通网络的操作次数——并查集
    <leetcode c++>25. K 个一组翻转链表
    织梦dedecms手机站关闭自动生成首页index.html
    IIS7 IIS7.5 伪静态 web.config 配置方法不带WWW的301跳转到带WWW
    win7和xp一样有左下角显示桌面快捷方式
    Win7系统传真与扫描功能无法使用的处理方法
    织梦dedecms将列表页重复的第一页去除的方法
    秦岭土蜂蜜价格 秦岭土蜂蜜多少钱一斤
  • 原文地址:https://www.cnblogs.com/carbs/p/5530083.html
Copyright © 2020-2023  润新知