Skip to content

Commit a486206

Browse files
author
Kale
committed
增加了底部的dialog的支持,简化了demo
1 parent b24d98b commit a486206

16 files changed

Lines changed: 303 additions & 146 deletions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ dialog = new DemoSimpleDialog.Builder()
125125
public class DemoDialog extends BaseCustomDialog {
126126
public static final String KEY_NUM = "KEY_NUM";
127127
/**
128-
* 继承自{@link kale.ui.view.BaseEasyDialog.Builder}以扩展builder
128+
* 继承自{@link kale.ui.view.dialog.BaseEasyDialog.Builder}以扩展builder
129129
*/
130130
public static class Builder extends BaseEasyDialog.Builder<DemoDialog.Builder> {
131131

app/build.gradle

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 25
5-
buildToolsVersion '25.0.0'
4+
compileSdkVersion 26
5+
buildToolsVersion '26.0.0'
66

77
defaultConfig {
88
applicationId "kale.easydialog"
99
minSdkVersion 14
10-
targetSdkVersion 25
10+
targetSdkVersion 26
1111
versionCode 2
1212
versionName "1.0.1"
1313
}
@@ -22,6 +22,7 @@ android {
2222
dependencies {
2323
compile fileTree(include: ['*.jar'], dir: 'libs')
2424
compile 'com.android.support:appcompat-v7:25.1.0'
25-
25+
compile 'com.android.support:design:26.0.0-alpha1'
26+
2627
compile project(':lib')
2728
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package kale.easydialog;
2+
3+
import android.content.Context;
4+
import android.support.annotation.NonNull;
5+
import android.view.View;
6+
import android.widget.TextView;
7+
8+
import kale.ui.view.dialog.BaseCustomDialog;
9+
import kale.ui.view.dialog.BaseEasyDialog;
10+
import kale.ui.view.dialog.EasyDialog;
11+
12+
/**
13+
* @author Kale
14+
* @date 2017/6/26
15+
*/
16+
public class CustomBottomSheetDialog extends BaseCustomDialog {
17+
18+
public static class Builder extends BaseEasyDialog.Builder<Builder> {
19+
20+
public Builder(@NonNull Context context) {
21+
super(context);
22+
}
23+
24+
@NonNull
25+
@Override
26+
protected EasyDialog createDialog() {
27+
return new CustomBottomSheetDialog();
28+
}
29+
}
30+
31+
@Override
32+
protected int getLayoutResId() {
33+
return R.layout.custom_dialog_layout;
34+
}
35+
36+
@Override
37+
protected void bindViews(View root) {
38+
39+
}
40+
41+
@Override
42+
protected void setViews() {
43+
findView(R.id.image_text_ll).setOnClickListener(new View.OnClickListener() {
44+
@Override
45+
public void onClick(View view) {
46+
// getDialog().cancel(); // 如果要触发cancel,必须写上这个
47+
dismiss();
48+
}
49+
});
50+
((TextView) findView(R.id.message_tv)).setText(getBuildParams().message);
51+
}
52+
}

app/src/main/java/kale/easydialog/CustomDialog.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
import android.view.WindowManager;
1313
import android.widget.TextView;
1414

15-
import kale.ui.view.BaseCustomDialog;
16-
import kale.ui.view.BaseEasyDialog;
17-
import kale.ui.view.EasyDialog;
15+
import kale.ui.view.dialog.BaseCustomDialog;
16+
import kale.ui.view.dialog.BaseEasyDialog;
17+
import kale.ui.view.dialog.EasyDialog;
1818

1919
/**
2020
* @author Kale

app/src/main/java/kale/easydialog/DemoDialog.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import android.os.Bundle;
55
import android.support.annotation.NonNull;
66

7-
import kale.ui.view.BaseEasyDialog;
8-
import kale.ui.view.EasyDialog;
7+
import kale.ui.view.dialog.BaseEasyDialog;
8+
import kale.ui.view.dialog.EasyDialog;
99

1010
/**
1111
* @author Kale
@@ -16,7 +16,7 @@ public class DemoDialog extends EasyDialog {
1616
public static final String KEY_NUM = "KEY_NUM";
1717

1818
/**
19-
* 继承自{@link kale.ui.view.EasyDialog.Builder}以扩展builder
19+
* 继承自{@link EasyDialog.Builder}以扩展builder
2020
*/
2121
public static class Builder extends BaseEasyDialog.Builder<Builder> {
2222

app/src/main/java/kale/easydialog/DemoSimpleDialog.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import android.widget.LinearLayout;
1515
import android.widget.TextView;
1616

17-
import kale.ui.view.BaseCustomDialog;
18-
import kale.ui.view.BaseEasyDialog;
17+
import kale.ui.view.dialog.BaseCustomDialog;
18+
import kale.ui.view.dialog.BaseEasyDialog;
1919

2020
/**
2121
* @author Jack Tony

app/src/main/java/kale/easydialog/MainActivity.java

Lines changed: 47 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
import android.content.Intent;
66
import android.graphics.BitmapFactory;
77
import android.os.Bundle;
8+
import android.support.annotation.NonNull;
9+
import android.support.design.widget.BottomSheetBehavior;
810
import android.support.v7.app.AppCompatActivity;
911
import android.text.TextUtils;
1012
import android.util.Log;
1113
import android.view.View;
12-
import android.widget.Button;
1314
import 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
}

app/src/main/res/drawable/dialog_bg_custom_red.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<item android:top="80dp">
1414
<shape android:shape="rectangle">
1515
<corners android:radius="10dp" />
16-
<solid android:color="@android:color/holo_red_dark" />
16+
<solid android:color="#d19a70" />
1717
</shape>
1818
</item>
1919

0 commit comments

Comments
 (0)