在5.0以上系统上支持关闭系统通知权限后显示,支持自定toast视图显示。
MyToast借鉴于: EToast2
当用户在5.0以上系统上关闭系统通知权限之后,系统Toast也会显示不出。让我们去跟踪一下Toast的源码,我们发现Toast其实是通过NotificationManagerService维护一个Toast队列。 然后通过队列去通知Toast中的客户端TN调用WindowManager去添加view显示。那么当用户关闭通知权限后自然也无法显示Toast了。
- 自己仿照系统的Toast然后用自己的消息队列来维护,让其不受NotificationManagerService影响。
- 通过WindowManager自己来写一个通知。
- 通过Dialog、PopupWindow来编写一个自定义通知。
- 通过直接去当前页面最外层content布局来添加View。
BaseLogger:'com.github.liqinew:baselogger:V.1.0.0'
1:在项目根目录build.gradley
allprojects {
repositories {
//依赖仓库
maven { url 'https://jitpack.io' }
}
}
2:依赖MyToast
compile 'com.github.liqinew:mytoast:V.1.0.1'
MyToast提供大量静态显示方法,请大家查阅MyToast对象API
MyToast.showShort(this, "Toast短时间弹出");
MyToast.showShort(this, "Toast长时间弹出");
//由于视图控件ID不可控因素存在。要想在自定义toast里面去改变视图控件内容,那么请使用者自行针对自己定义的视图和MyToast再次封装。
View inflate = LayoutInflater.from(this).inflate(R.layout.xxxxx, null);
//此处只是调用底部显示自定义toast的方法,其他方法请自行进入MyToast对象里面去查看,里面注释很齐全的。
MyToast.putBottomDiyToastShort(this, inflate, 190, 0, 30);
/**
* 系统toast长时间显示
*
* @param context
* @param contentInt
*/
MyToast.showLong(Context context, int contentInt);
/**
* 系统toast长时间显示
*
* @param context
* @param contentStr
*/
MyToast.showLong(Context context, String contentStr);
/**
* 系统toast短时间显示
*
* @param context
* @param contentInt
*/
MyToast.showShort(Context context, int contentInt);
/**
* 系统toast短时间显示
*
* @param context
* @param contentStr
*/
MyToast.showShort(Context context, String contentStr);
/**
* 返回自定义toast
*
* @param context
* @param view 布局View
* @param toastTime 显示持续时长
* @param transparency 透明度 0-255
* @param gravity 视图显示位置
* @param xOffset X轴偏距
* @param yOffset Y轴偏距
* @return
*/
MyToast.putDiyToast(Context context, View view, ToastTime toastTime,
int transparency, int gravity, int xOffset, int yOffset);
/**
* 返回自定义toast居中不偏距长时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @return
*/
MyToast.putCenterDiyToastLong(Context context, View view, int transparency);
/**
* 返回自定义toast居中长时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param xOffset X轴偏距
* @param yOffset Y轴偏距
* @return
*/
MyToast.putCenterDiyToastLong(Context context, View view, int transparency, int xOffset, int yOffset);
/**
* 返回自定义toast顶部不偏距长时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @return
*/
MyToast.putTopDiyToastLong(Context context, View view, int transparency);
/**
* 返回自定义toast顶部长时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param xOffset X轴偏距
* @param yOffset Y轴偏距
* @return
*/
MyToast.putTopDiyToastLong(Context context, View view, int transparency, int xOffset, int yOffset);
/**
* 返回自定义toast底部不偏距长时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @return
*/
MyToast.putBottomDiyToastLong(Context context, View view, int transparency) ;
/**
* 返回自定义toast底部长时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param xOffset X轴偏距
* @param yOffset Y轴偏距
* @return
*/
MyToast.putBottomDiyToastLong(Context context, View view, int transparency, int xOffset, int yOffset);
/**
* 返回自定义toast居中不偏距短时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @return
*/
MyToast.putCenterDiyToastShort(Context context, View view, int transparency);
/**
* 返回自定义toast居中短时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param xOffset X轴偏距
* @param yOffset Y轴偏距
* @return
*/
MyToast.putCenterDiyToastShort(Context context, View view, int transparency, int xOffset, int yOffset);
/**
* 返回自定义toast顶部不偏距短时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @return
*/
MyToast.putTopDiyToastShort(Context context, View view, int transparency);
/**
* 返回自定义toast顶部短时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param xOffset X轴偏距
* @param yOffset Y轴偏距
* @return
*/
MyToast.putTopDiyToastShort(Context context, View view, int transparency, int xOffset, int yOffset);
/**
* 返回自定义toast底部不偏距短时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @return
*/
MyToast.putBottomDiyToastShort(Context context, View view, int transparency);
/**
* 返回自定义toast底部短时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param xOffset X轴偏距
* @param yOffset Y轴偏距
* @return
*/
MyToast.putBottomDiyToastShort(Context context, View view, int transparency, int xOffset, int yOffset);
/**
* 返回自定义toast短时间不偏距显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param gravity 视图显示位置
* @return
*/
MyToast.putDiyToastShort(Context context, View view, int transparency, int gravity);
/**
* 返回自定义toast短时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param gravity 视图显示位置
* @param xOffset X轴偏距
* @param yOffset Y轴偏距
* @return
*/
MyToast.putDiyToastShort(Context context, View view, int transparency, int gravity, int xOffset, int yOffset);
/**
* 返回自定义toast长时间不偏距显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param gravity 视图显示位置
* @return
*/
MyToast.putDiyToastLong(Context context, View view, int transparency, int gravity);
/**
* 返回自定义toast长时间显示
*
* @param context
* @param view 布局View
* @param transparency 透明度 0-255
* @param gravity 视图显示位置
* @param xOffset X轴偏距
* @param yOffset Y轴偏距
* @return
*/
MyToast.putDiyToastLong(Context context, View view, int transparency, int gravity, int xOffset, int yOffset);
如果觉得MyToast对象提供的API不满足你的要求,你也可以针对com.liqi.toast.LToast和com.liqi.toast.Toast封装。
com.liqi.toast.LToast和com.liqi.toast.Toast的API请查阅源码。