Gradle:
// add it in repositories
maven { url 'http://xcserver:8082/nexus/content/repositories/releases/' }
// add it in dependencies
compile "com.ecarx:tip2:2.0.1"
showShort: 显示短时吐司
showLong : 显示长时吐司
cancel : 取消吐司显示
createLoading : 创建加载框
createMessage : 创建消息对话框
createSelectItems : 创建选项对话框
createSelectButtons: 创建选按钮对话框
createPicker : 创建选择对话框
首先在你的 Application.class
中初始化 XCTip2
,具体如下所示
// init it in ur class of Application
XCTip2.init(this);
然后配置换肤主题颜色属性,不同皮肤不同色哈。
<!-- XCDialog -->
<color name="ecarx_theme_main_color_pressed">#800CB7B4</color>
<color name="ecarx_theme_main_color">#FF0CB7B4</color>
如果要自定义 Toast
的话,可模仿 XCToast
的实现的方式,继承 ToastUtils
来传入自定义布局,由于 Toast
使用比较简单,根据 API 即可使用,不做过多介绍。
因为使用的是 DialogFragment
,所以大家使用的 Activity
都应该是 FragmentActivity
的子类,由于初始化的时候我监听了 Activity
的生命周期,所以调用的时候无需传入相关的上下文来显示 Dialog
,如果整个应用没有 Activity
,那么需要创建一个继承于 FragmentActivity
的透明 Activity
,在其中显示你需要显示的 Dialog
,然后调用 startActivity
来间接显示 Dialog
即可,下面介绍其使用。
public void showLoading(View view) {
if (loadingDialog == null) {
loadingDialog = DialogFactory.createLoading(new LoadingDialog.Config()
.setCanceledOnTouchOutside(false)
.setLoadingMessage("loading..."));
}
loadingDialog.show();
}
效果图如下所示。
public void showMessageWithoutCheck(View view) {
if (messageDialogWithoutCheck == null) {
messageDialogWithoutCheck = DialogFactory.createMessage(new MessageDialog.Config()
.setCanceledOnTouchOutside(false)
.setTitle("标题")
.setMessage("这是带有标题和两个选择按钮的消息对话框,没有复选框。")
.setLeftButton("确定", true, new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
XCToast.showLong("点了确定");
dialog.dismiss();// 返回 true 代表确定
return true;
}
})
.setRightButton("取消", new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
XCToast.showLong("点了取消");
dialog.dismiss();// 返回 false 代表取消
return false;
}
}));
}
messageDialogWithoutCheck.show();
}
效果图如下所示。
public void showMessageWithCheck(View view) {
if (messageDialogWithCheck == null) {
messageDialogWithCheck = DialogFactory.createMessage(new MessageDialog.Config()
.setCanceledOnTouchOutside(false)
.setCanceled(false)
.setMessage("这是带有复选框的对话框")
.setLeftButton("确定", true, new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
dialog.dismiss();
return true;
}
})
.setCheckBox(false, "不再提示", new MessageDialog.CheckedCallback() {
@Override
public void checkedCallback() {
XCToast.showLong("选择了复选框");
}
}));
}
messageDialogWithCheck.show();
}
效果图如下所示。
public void showSelectItems(View view) {
if (selectItemsDialog == null) {
selectItemsDialog = DialogFactory.createSelectItems(new SelectItemsDialog.Config()
.setCanceledOnTouchOutside(false)
.setSelectItems(new String[]{"未选中", "选中"}, 1,
new OnSelectListener() {
@Override
public void onSelect(Dialog dialog, int index) {
XCToast.showLong(String.valueOf(index));
dialog.dismiss();
}
})
.setLeftButton("取消", new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
dialog.dismiss();
return false;
}
}));
}
selectItemsDialog.show();
}
效果图如下所示。
public void showSelectButtonsWithMsg(View view) {
if (selectButtonsDialog == null) {
selectButtonsDialog = DialogFactory.createSelectButtons(new SelectButtonsDialog.Config()
.setCanceledOnTouchOutside(false)
.setSelectButtons("下载“喜马拉雅电台”将使用22.9MB付费流量,下载应用?",
new String[]{"选项", "选项", "选项"},
new Boolean[]{true, false, false},
new OnSelectListener() {
@Override
public void onSelect(Dialog dialog, int index) {
XCToast.showLong(String.valueOf(index));
dialog.dismiss();
}
})
.setLeftButton("取消", new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
dialog.dismiss();
return false;
}
}));
}
selectButtonsDialog.show();
}
效果图如下所示。
public void showSelectButtonsWithoutMsg(View view) {
if (selectButtonsDialogNoMsg == null) {
selectButtonsDialogNoMsg = DialogFactory.createSelectButtons(new SelectButtonsDialog.Config()
.setCanceledOnTouchOutside(false)
.setTitle("标题")
.setSelectButtons(new String[]{"蓝牙电话", "免费电话"},
new OnSelectListener() {
@Override
public void onSelect(Dialog dialog, int index) {
XCToast.showLong(String.valueOf(index));
dialog.dismiss();
}
})
.setLeftButton("取消", new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
dialog.dismiss();
return false;
}
}));
}
selectButtonsDialogNoMsg.show();
}
效果图如下所示。
public void showPickerSingle(View view) {
if (PickerDialogSingle == null) {
PickerDialogSingle = DialogFactory.createPicker(new PickerDialog.Config()
.setCanceledOnTouchOutside(false)
.setTitle("标题")
.setLeftButton("取消", new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
dialog.dismiss();
return false;
}
})
.setRightButton("确定", true, new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
dialog.dismiss();
return true;
}
})
.setPicker(2017, new OnPickListener() {
@Override
public void onPick(String result) {
XCToast.showLong(result);
}
})
);
}
PickerDialogSingle.show();
}
效果图如下所示。
public void showPickerMulti(View view) {
if (PickerDialogMulti == null) {
PickerDialogMulti = DialogFactory.createPicker(new PickerDialog.Config()
.setCanceledOnTouchOutside(false)
.setLeftButton("取消", new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
dialog.dismiss();
return false;
}
})
.setRightButton("确定", true, new OnClickListener() {
@Override
public boolean onClick(Dialog dialog, View view) {
dialog.dismiss();
return true;
}
})
.setPicker(2017, 8, new OnPickListener() {
@Override
public void onPick(String result) {
XCToast.showLong(result);
}
})
);
}
PickerDialogMulti.show();
}
效果图如下所示。
项目中使用到的 Dialog
如上已包括,后面讲解的 Config
为选看。
Demo的话可以参看 XCCommon
中 app
下的 tip
模块。
以上四种 Dialog
创建都需要传入各自的 Conifg
,其Config都继承于 BaseDialog.BaseConifg
,相关 API 如下所示。
API of BaseDialog.BaseConfig
setSize : 设置Dialog尺寸
setWidth : 设置Dialog宽度
setHeight : 设置Dialog高度
setGravity : 设置Dialog位置
setAlpha : 设置Dialog透明度
setBg : 设置Dialog背景
setBgRes : 设置Dialog背景资源
setCanceled : 设置点击取消是否可以关闭Dialog
setCanceledOnTouchOutside: 设置点击Dialog外围是否可以关闭Dialog
setOnCancelListener : 设置取消回调事件
除了 LoadingDialog
,带有标题和底部按钮的都继承自 BaseContentDialog
,它的 Config
如下所示。
API of BaseContentDialog.Config
setTitle : 设置标题
setLeftButton : 设置左按钮
setRightButton: 设置右按钮
如果底部只需要一个按钮,那么只需从 setLeftButton
和 setRightButton
任选其一即可。
完结 撒花
- 2.0.1: 发布第一版(18/01/22)