XToast使用笔记
一.代码位置
二.引用
将JitPack存储库添加到您的构建文件中
将其添加到存储库末尾的root build.gradle中:1
2
3
4
5
6allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}添加依赖项
1
2
3
4dependencies {
...
implementation 'com.github.itemuse:XLib:Tag'
}初始化 Application中init
1
2
3
4
5
6
7import cn.xy.library.XApp;
...
@Override
public void onCreate() {
super.onCreate();
XApp.init(this);
}AndroidManifest.xml中添加弹出界面的activity
1
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
三.效果图
四.需求和代码
工作中的需求,解决原生Toast在高版本平台发现连续点击之后不会弹出问题。
解决方法最终是使用WindowManager来替换原生Toast
- 示例使用单例化
1
2
3
4
5
6
7
8
9
10
11XToast.getInstance()
.Text("AAAAAA")
.TextColor(R.color.colorPrimary) //字体颜色
.TextSize(50) //字体大小
.BackGroundColor(R.color.colorAccent) //背景颜色
.LayoutParamsX(w) //偏离XToast左边距离 受Gravity影响
.LayoutParamsY(h) //偏离XToastY坐标距离 受Gravity影响
.Gravity(Gravity.BOTTOM) //Toast显示位置的重心设置
.RoundedCorners(3) //背景圆角大小
.ShowTime(XToast.LENGTH_SHORTSHORT) //显示时长
.show();通过handler通讯,将实例创建在UI线程1
2
3
4
5
6
7
8public static XToast getInstance() {
if (mToastView == null) {
mToastView = new XToast(XApp.getApp());
return mToastView;
} else {
return mToastView;
}
}给view设置圆角1
2
3
4
5
6
7private Handler mHandler = new Handler(Looper.getMainLooper()) {
public void handleMessage(android.os.Message msg) {
if (msg.what == HIDE) {
hide();
}
}
};其他的就是一些WindowManager创建流程1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19/**
* 设置视图裁剪的圆角半径
* @param radius 半径
*/
public static void setRoundedCorners(View view, final int radius) {
if (view == null) return;
if (radius <= 0) {
return;
}
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
view.setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), radius);
}
});
view.setClipToOutline(true);
}
}