[原創]自定義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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM