Skip to content

Instantly share code, notes, and snippets.

@Blankj
Last active January 16, 2018 02:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Blankj/39208e03014192c4caebf7380b108c0b to your computer and use it in GitHub Desktop.
Save Blankj/39208e03014192c4caebf7380b108c0b to your computer and use it in GitHub Desktop.
[How to use XCTip] #XCCommon

Download

Gradle:

// add it in repositories
maven { url 'http://xcserver:8082/nexus/content/repositories/releases/' }
// add it in dependencies
compile "com.ecarx:tip:1.6.3"

API

API of XCToast

showShort: 显示短时吐司
showLong : 显示长时吐司
cancel   : 取消吐司显示

API of DialogFactory

createLoading      : 创建加载框
createMessage      : 创建消息对话框
createSelectItems  : 创建选项对话框
createSelectButtons: 创建选按钮对话框

How to use

首先在你的 Application.class 中初始化 XCTip,具体如下所示

// init it in ur class of Application
XCTip.init(this);

然后配置换肤主题颜色属性,不同皮肤不同色哈。

<!-- XCDialog -->
<color name="ecarx_theme_main_color_pressed">#80007AFF</color>
<color name="ecarx_theme_main_color">#FF007AFF</color>

如果要自定义 Toast 的话,可模仿 XCToast 的实现的方式,继承 ToastUtils 来传入自定义布局,由于 Toast 使用比较简单,根据 API 即可使用,不做过多介绍。

因为使用的是 DialogFragment,所以大家使用的 Activity 都应该是 FragmentActivity 的子类,由于初始化的时候我监听了 Activity 的生命周期,所以调用的时候无需传入相关的上下文来显示 Dialog,如果整个应用没有 Activity,那么需要创建一个继承于 FragmentActivity 的透明 Activity,在其中显示你需要显示的 Dialog,然后调用 startActivity 来间接显示 Dialog 即可,下面分别介绍四种对话框的使用。

Loading

Vertical Loading

public void showLoading(View view) {
    if (loadingDialog == null) {
        loadingDialog = DialogFactory.createLoading(new LoadingDialog.Config(true)
                .setCanceledOnTouchOutside(false)
                .setLoadingMessage("loading......"));
    }
    loadingDialog.show();
}

具体如下图所示。

loading_vertical.png

Horizontal Loading

public void showLoading(View view) {
    if (loadingDialog == null) {
        loadingDialog = DialogFactory.createLoading(new LoadingDialog.Config(false)
                .setCanceledOnTouchOutside(false)
                .setLoadingMessage("loading......"));
    }
    loadingDialog.show();
}

具体如下图所示。

loading_horizontal.png

Message

public void showMessage(View view) {
    if (messageDialog == null) {
        messageDialog = DialogFactory.createMessage(new MessageDialog.Config()
                .setCanceledOnTouchOutside(false)
                .setMessage("这里展示的是消息,这里展示的是消息,这里展示的是消息")
                .setLeftButton("确定", new OnClickListener() {
                    @Override
                    public void onClick(Dialog dialog, View view) {
                        XCToast.showLong("点了确定");
                        dialog.dismiss();
                    }
                })
                .setRightButton("取消", new OnClickListener() {
                    @Override
                    public void onClick(Dialog dialog, View view) {
                        XCToast.showLong("点了取消");
                        dialog.dismiss();
                    }
                }));
    }
    messageDialog.show();
}

具体如下图所示。

message.png

Select Items

public void showSelectItems(View view) {
    if (selectItemsDialog == null) {
        selectItemsDialog = DialogFactory.createSelectItems(new SelectItemsDialog.Config()
                .setCanceledOnTouchOutside(false)
                .setTitle("标题")
                .setSelectItems(new String[]{"列表名称", "列表名称", "列表名称", "列表名称"}, 2,
                        new OnSelectListener() {
                            @Override
                            public void onSelect(Dialog dialog, int index) {
                                XCToast.showLong(String.valueOf(index));
//                                dialog.dismiss();
                            }
                        })
                .setLeftButton("取消", new OnClickListener() {
                    @Override
                    public void onClick(Dialog dialog, View view) {
                        XCToast.showLong("点了取消");
                        dialog.dismiss();
                    }
                }));
    }
    selectItemsDialog.show();
}

具体如下图所示。

select_items.png

Select Buttons

public void showSelectButtons(View view) {
    if (selectButtonsDialog == null) {
        selectButtonsDialog = 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 void onClick(Dialog dialog, View view) {
                        XCToast.showLong("点了取消");
                        dialog.dismiss();
                    }
                }));
    }
    selectButtonsDialog.show();
}

具体如下图所示。

select_buttons.png

项目中使用到的 Dialog 如上已包括,后面讲解的 Config 为选看。

Demo的话可以参看 XCCommonapp 下的 tip 模块。

Config

以上四种 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: 设置右按钮

如果底部只需要一个按钮,那么只需从 setLeftButtonsetRightButton 任选其一即可。

完结 撒花

Update Log

  • 1.6.3: 新增 Toast 和 Dialog 弹出时加入属于什么应用的日志,tag 为 XCTip 即可过滤(18/01/16)
  • 1.6.2: 修复 SDK 18 ToastUtils 连续显示崩溃的问题(18/01/08)
  • 1.6.1: 修复 LoadingDialog 跳转 Activity 时 dismiss 崩溃错误
  • 1.6.0: 分离 2.0 相关的东西
  • 1.5.1: 修复 LoadingDialog 的最少显示时长
  • 1.5.0: 修复 LoadingDialog 的内存泄露
  • 1.4.1: 修复 MessageDialog2 圆角和 onCancel
  • 1.4.0: 连续点击崩溃的 Bug 已消除,新增 2.0 样式的 Dialog 和 Toast
  • 1.3.1: 新增返回键事件
  • 1.2.1: Dialog 适配换肤主题
  • 1.2.0: Loading Dialog 增加适配
  • 1.1.0: 修复 toast 弱引用为空,修复 dialog 从桌面回来崩溃的问题,新增横向加载对话框
  • 1.0.0: 新增 toast 及四种类型 dialog
@mantoudev
Copy link

me me da

@Blankj
Copy link
Author

Blankj commented Jan 3, 2018

摸摸大

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment