55import android .content .Intent ;
66import android .graphics .BitmapFactory ;
77import android .os .Bundle ;
8+ import android .support .annotation .NonNull ;
9+ import android .support .design .widget .BottomSheetBehavior ;
810import android .support .v7 .app .AppCompatActivity ;
911import android .text .TextUtils ;
1012import android .util .Log ;
1113import android .view .View ;
12- import android .widget .Button ;
1314import android .widget .Toast ;
1415
15- import kale .ui .view .EasyDialog ;
16+ import kale .ui .view .dialog . EasyDialog ;
1617
1718/**
1819 * 关于更多对话框的设置请参考:http://www.cnblogs.com/tianzhijiexian/p/3867731.html
@@ -21,89 +22,48 @@ public class MainActivity extends AppCompatActivity {
2122
2223 public final String TAG = getClass ().getSimpleName ();
2324
25+ private BottomSheetBehavior behavior ;
26+
2427 @ Override
2528 protected void onCreate (Bundle savedInstanceState ) {
2629 super .onCreate (savedInstanceState );
2730 setContentView (R .layout .activity_main );
28-
2931 assignViews ();
30- setViews ();
3132 }
3233
33- private Button simpleDialogBtn ;
34-
35- private Button singleDialogBtn ;
36-
37- private Button multiDialogBtn ;
38-
39- private Button customDialog ;
40-
41- private Button customDialog02 ;
42-
4334 private void assignViews () {
44- simpleDialogBtn = (Button ) findViewById (R .id .simple_dialog_btn );
45- singleDialogBtn = (Button ) findViewById (R .id .single_dialog_btn );
46- multiDialogBtn = (Button ) findViewById (R .id .multi_dialog_btn );
47- customDialog = (Button ) findViewById (R .id .custom_dialog_btn );
48- customDialog02 = (Button ) findViewById (R .id .custom_dialog02_btn );
49-
5035 findViewById (R .id .jump_btn ).setOnClickListener (new View .OnClickListener () {
5136 @ Override
5237 public void onClick (View v ) {
5338 startActivity (new Intent (MainActivity .this , CustomStyleActivity .class ));
5439 }
5540 });
56- }
5741
58- private void setViews () {
59- // 最简单提示对话框
60- simpleDialogBtn .setOnClickListener (new View .OnClickListener () {
42+ View view = findViewById (R .id .ll_sheet_root );
43+ // 得到 Bottom Sheet 的视图对象所对应的 BottomSheetBehavior 对象
44+ this .behavior = BottomSheetBehavior .from (view );
45+ this .behavior .setBottomSheetCallback (new BottomSheetBehavior .BottomSheetCallback () {
6146 @ Override
62- public void onClick (View v ) {
63- simpleDialog ();
64- }
65- });
47+ public void onStateChanged (@ NonNull View bottomSheet , int newState ) {
6648
67- // 单选对话框
68- singleDialogBtn .setOnClickListener (new View .OnClickListener () {
69- @ Override
70- public void onClick (View v ) {
71- singleChoiceDialog ();
7249 }
73- });
7450
75- // 多选对话框
76- multiDialogBtn .setOnClickListener (new View .OnClickListener () {
7751 @ Override
78- public void onClick (View v ) {
79- multiChoiceDialog ();
80- }
81- });
52+ public void onSlide (@ NonNull View bottomSheet , float slideOffset ) {
8253
83- // 自定义对话框
84- customDialog .setOnClickListener (new View .OnClickListener () {
85- @ Override
86- public void onClick (View v ) {
87- customDialog ();
88- }
89- });
90-
91- customDialog02 .setOnClickListener (new View .OnClickListener () {
92- @ Override
93- public void onClick (View v ) {
94- customDialog02 ();
9554 }
9655 });
9756 }
9857
99- private void simpleDialog () {
58+ public void simpleDialog (View v ) {
10059 EasyDialog .Builder builder = new EasyDialog .Builder (this );
10160 builder .setTitle ("Title" )
10261 .setIcon (R .mipmap .ic_launcher )
10362 .setMessage (R .string .hello_world )
10463 .setOnCancelListener (new DialogInterface .OnCancelListener () {
10564 @ Override
10665 public void onCancel (DialogInterface dialog ) {
66+ // 点空白处消失时才会触发!!!!
10767 Log .d (TAG , "onCancel" ); // onCancel - > onDismiss
10868 }
10969 })
@@ -133,7 +93,7 @@ public void onClick(DialogInterface dialog, int which) {
13393 dialog .show (getSupportFragmentManager ());
13494 }
13595
136- private void singleChoiceDialog () {
96+ public void singleChoiceDialog (View v ) {
13797 EasyDialog dialog = new EasyDialog .Builder (this )
13898 .setTitle ("Single Choice Dialog" )
13999 .setSingleChoiceItems (new String []{"Android" , "ios" , "wp" }, 1 , new DialogInterface .OnClickListener () {
@@ -148,7 +108,7 @@ public void onClick(DialogInterface dialog, int position) {
148108 dialog .show (getSupportFragmentManager (), TAG );
149109 }
150110
151- private void multiChoiceDialog () {
111+ public void multiChoiceDialog (View v ) {
152112 new EasyDialog .Builder (this )
153113 // 设置数据和默认选中的选项
154114 .setMultiChoiceItems (new String []{"Android" , "ios" , "wp" }, new boolean []{true , false , true },
@@ -163,7 +123,7 @@ public void onClick(DialogInterface dialog, int which, boolean isChecked) {
163123
164124 private DemoSimpleDialog dialog ;
165125
166- private void customDialog () {
126+ public void customDialog (View v ) {
167127 dialog = new DemoSimpleDialog .Builder (this )
168128 .setImageBitmap (BitmapFactory .decodeResource (getResources (), R .drawable .kale ))
169129 .setInputText ("" , "hint" )
@@ -180,11 +140,41 @@ public void onClick(DialogInterface ignore, int which) {
180140 dialog .show (getSupportFragmentManager ()); // 一个参数的show()
181141 }
182142
183- private void customDialog02 () {
143+ public void customDialog02 (View v ) {
184144 CustomDialog .Builder builder = new CustomDialog .Builder (this );
185145 builder .setTitle ("Custom Dialog" );
186146 CustomDialog dialog = builder .build ();
187147 dialog .show (getSupportFragmentManager ());
188148 }
189149
150+ public void customBottomDialog (View v ) {
151+ CustomBottomSheetDialog .Builder builder = new CustomBottomSheetDialog .Builder (this );
152+ builder .setMessage ("click me" );
153+ builder .setIsBottomDialog (true );
154+ CustomBottomSheetDialog dialog = builder .build ();
155+ dialog .show (getSupportFragmentManager (), "dialog" );
156+
157+ dialog .setCancelable (false ); // 如果设置了,那么底部dialog就不支持手势关闭和空白处关闭
158+ dialog .setOnCancelListener (new DialogInterface .OnCancelListener () {
159+ @ Override
160+ public void onCancel (DialogInterface dialogInterface ) {
161+ // 监听点空白处cancel的事件
162+ Toast .makeText (MainActivity .this , "cancel" , Toast .LENGTH_SHORT ).show ();
163+ }
164+ });
165+ dialog .setOnDismissListener (new DialogInterface .OnDismissListener () {
166+ @ Override
167+ public void onDismiss (DialogInterface dialogInterface ) {
168+ Toast .makeText (MainActivity .this , "dismiss" , Toast .LENGTH_SHORT ).show ();
169+ }
170+ });
171+ }
172+
173+ public void customBottomDialog02 (View v ) {
174+ if (behavior .getState () == BottomSheetBehavior .STATE_EXPANDED ) {
175+ behavior .setState (BottomSheetBehavior .STATE_COLLAPSED );
176+ } else {
177+ behavior .setState (BottomSheetBehavior .STATE_EXPANDED );
178+ }
179+ }
190180}
0 commit comments