-
Notifications
You must be signed in to change notification settings - Fork 223
PopTip_tc
🌐 View English Document | 简体中文文档
提供一個類似 Toast 的文本提示功能,但它擁有更強大的自訂屬性。你可以設置文本提示、圖示、以及一個控制按鈕,並可以設置持續顯示或定義自動消失的時長。PopTip 是非阻斷式提示,也就是說,在 PopTip 顯示時用戶依然可以操作界面。
使用以下代碼顯示一個 PopTip:
PopTip.show("這是一個提示");
顯示一個帶圖示的 PopTip:
PopTip.show(R.mipmap.img_mail_line_white, "收到一封郵件");
顯示一個帶圖示的 PopTip 並附帶一個按鈕:
PopTip.show(R.mipmap.img_mail_line_white, "郵件已發送", "撤回");
顯示的圖示可以選擇是否染色根據亮色/暗色主題效果進行染色:
//關閉圖示染色:
PopTip.show(R.mipmap.img_mail_line_white,"這是一個提示")
.setAutoTintIconInLightOrDarkMode(false);
想要通過指令快速構建提示,你可以在類的頭部添加引入(部分 IDE 可以快速自動生成):
import static com.kongzue.dialogx.dialogs.PopTip.tip;
然後在代碼中直接使用:
//創建一個文本提示
tip(message);
//創建一個文本提示和一個按鈕
tip(message, okButtonText)
.setButton(new OnDialogButtonClickListener<PopTip>() {
@Override
public boolean onClick(PopTip dialog, View v) {
//...
return false;
}
});
//創建一個帶圖示的文字提示
tip(R.mipmap.icon, message);
//創建一個帶圖示和按鈕的文字提示
tip(R.mipmap.icon, message, okButtonText);
PopTip 默認顯示 2 秒後自動消失,若要手動調整,可以調用以下方法來設置顯示時長:
//顯示 2 秒
PopTip.show("這是一個提示").showShort();
//顯示 3.5 秒
PopTip.show("這是一個提示").showLong();
//顯示自訂 1 秒時長(單位:毫秒)
PopTip.show("這是一個提示").autoDismiss(1000);
不自動消失,持續顯示:
PopTip.show("這是一個提示").noAutoDismiss();
手動關閉已顯示的 PopTip:
PopTip tip = PopTip.show("這是一個提示").noAutoDismiss();
//手動關閉:
tip.dismiss();
按鈕回調可以透過方法進行設置:
PopTip.show(R.mipmap.img_mail_line_white, "郵件已發送", "撤回").showLong().setButton(new OnDialogButtonClickListener<PopTip>() {
@Override
public boolean onClick(PopTip popTip, View v) {
//點擊“撤回”按鈕回調
return false;
}
});
回調中有一個返回值,若return true
則可以點擊後不自動關閉 PopTip。
另外,DialogX 還提供了多種設置回調和按鈕文本的方法:
//只設置按鈕文本
.setButton("按鈕文本")
//只設置按鈕點擊回調
.setButton(new OnDialogButtonClickListener<PopTip>() {
@Override
public boolean onClick(PopTip popTip, View v) {
toast("點擊按鈕");
return false;
}
});
//設置按鈕文本並設置回調
.setButton("確定", new OnDialogButtonClickListener<PopTip>() {
@Override
public boolean onClick(PopTip popTip, View v) {
toast("點擊按鈕");
return false;
}
});
//隱藏按鈕
.setButton(null)
請依據個人喜好隨意使用。
除了按鈕可以設置點擊回調外,也可以設置 PopTip 的提示的點擊回調,但一旦開啟提示點擊,PopTip 的提示文字部分將不再可以點擊穿透。
使用以下代碼設置 PopTip 的點擊回調:
PopTip.show("這是一個提示").setOnPopTipClickListener(new OnDialogButtonClickListener<PopTip>() {
@Override
public boolean onClick(PopTip baseDialog, View v) {
//點擊 PopTip
return false;
}
});
想要監控對話框的生命週期,可以實現其 .setDialogLifecycleCallback(...)
介面,建議使用build()
方法構建對話框:
PopTip.build()
.setDialogLifecycleCallback(new DialogLifecycleCallback<PopTip>() {
@Override
public void onShow(PopTip dialog) {
//PopTip 啟動時回調
}
@Override
public void onDismiss(PopTip dialog) {
//PopTip 關閉時回調
}
})
.show();
PopTip 也支持 Lifecycle,你可以使用 .getLifecycle()
獲取 Lifecycle 對象。
你也可以透過使用 new 構建實例時,override 的生命週期事件的方式來處理生命週期事務,例如:
//複寫事件示範
new PopTip() {
@Override
public void onShow(PopTip dialog) {
//...
tip("onShow");
}
@Override
public void onDismiss(PopTip dialog) {
//...
tip("onDismiss");
}
}
你也可以使用方法 .onShow(DialogXRunnable)
和 .onDismiss(DialogXRunnable)
,來處理生命週期事務,例如:
PopTip.show(...)
.onShow(new DialogXRunnable<PopTip>() {
@Override
public void run(PopTip dialog) {
//PopTip show!
}
})
.onDismiss(new DialogXRunnable<PopTip>() {
@Override
public void run(PopTip dialog) {
//PopTip dismiss!
}
});
要實現在對話框中加入自訂布局,請先準備好自訂布局文件,然後使用以下方法構建:
PopTip.build()
.setCustomView(new OnBindView<PopTip>(R.layout.layout_custom_view) {
@Override
public void onBind(PopTip dialog, View v) {
//v.findViewById(...)
}
})
.show();
回調參數中,v
為您給定的布局文件的實例化組件,您可以通過 v.findViewById(resId)
來實例化其他子布局組件,並在 onBind
方法中設置其功能和事件回調。
PopTip.show("這裡是正文內容。")
//設置入場動畫資源和出場動畫資源
.setAnimResId(R.anim.anim_dialogx_bottom_enter, R.anim.anim_dialogx_bottom_exit);
要自訂動畫文件,可以參考:預設對話框啟動動畫文件和預設對話框關閉動畫文件
額外說明,除了 .setAnimResId(enterAnimResId, exitAnimResId)
外,還有 .setEnterAnimResId(enterAnimResId)
和 .setExitAnimResId(enterAnimResId)
單獨方法可選,此方法僅針對單次顯示的對話框有效。
另外你也可以通過 setEnterAnimDuration([long])
設置入場動畫時長以及通過 .setExitAnimDuration([long])
設置關閉動畫時長。
你可以通過靜態屬性直接修改全局 PopTip 的動畫:
//設置全局 PopTip入場動畫
PopTip.overrideEnterAnimRes = R.anim.anim_dialogx_bottom_enter;
//設置全局 PopTip出場動畫
PopTip.overrideExitAnimRes = R.anim.anim_dialogx_bottom_exit;
//設置全局 PopTip入場動畫時間
PopTip.overrideEnterDuration = 1000;
//設置全局 PopTip出場動畫時間
PopTip.overrideExitDuration = 1000;
您還可以通過參考自訂主題介面,完全訂製全局的動畫框默認動畫效果,具體請查閱 《自訂 DialogX 主題》
請注意這三種設置是由優先度區別的,針對單次顯示的對話框動畫修改優先度 > 對 PopTip 全局生效的的動畫修改 > 自訂主題修改。
//允許同時彈出多個 PopTip
DialogX.onlyOnePopTip = false;
//強制重新刷新界面
.refreshUI();
//關閉對話框
.dismiss();
//設置標題文字樣式
.setTitleTextInfo(TextInfo);
//設置按鈕文字樣式
.setButtonTextInfo(TextInfo);
//設置提示文字樣式
.setMessageTextInfo(TextInfo);
//獲取對話框實例化對象,您可以透過此方法更深度的訂製Dialog的功能
.getDialogImpl()
//獲取自訂布局實例
.getCustomView()
//設置背景顏色,強行對對話框背景進行染色,請注意參數為int類型的顏色值而非R.color的索引
.setBackgroundColor(ColorInt);
//設置對話框圓角(會裁切內容顯示)
.setRadius(float px)
//隱藏對話框(無動畫),恢復顯示請執行非靜態方法的 .show()
.hide();
//是否處於顯示狀態
.isShow()
//置頂對話框
.bringToFront()
//指定對話框顯示層級
.setThisOrderIndex(int)
當 DialogX.onlyOnePopTip
設置為 false
時,可以允許 PopTip 同時彈出多個實例,已彈出的實例會位移一段距離避開新彈出的 PopTip 的方式顯示,如下圖所示。
開啟此開關後,PopTip 將一次只能顯示一個實例,新彈出實例時會自動關閉舊的實例。
TextInfo 用於儲存基礎文本樣式設置,其包含一系列屬性和響應的 get/set 方法,例如方法解釋如下:
屬性 | 解釋 | 預設值 |
---|---|---|
fontSize | 字號大小,值為-1時使用默認樣式,單位:dp | -1 |
gravity | 對齊方式,值為-1時使用默認樣式,取值可使用Gravity.CENTER 等對齊方式 |
-1 |
fontColor | 文字顏色,值為1時使用默認樣式,取值可以用Color.rgb(r,g,b)等方式獲取 | 1 |
bold | 是否粗體 | false |
請注意,fontColor 為 ColorInt 值,您可以使用 Color.parseColor("#4D000000")
設置一個 HEX 色值,或使用資源 getResources().getColor(R.color.black30)
設置一個顏色的資源值,請勿直接傳入資源 ID,它可能會無效。
若你的 App 引入了多種主題,在特定場景下需要使對話框顯示為某種非全局的主體樣式,可使用 .build()
構建對話框,然後使用 .setStyle(style)
來指定主題樣式,在最後執行 .show()
命令顯示對話框,例如:
PopTip.build()
//或直接使用 .build(IOSStyle.style())
.setStyle(IOSStyle.style())
.setMessage("Message content.")
.setButton("Button")
.show();