Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

AndroidUtilLibrary/smart-show

Repository files navigation

SmartShow

★★★ 本库为androidx支持库版。

模块导航:

功能总览:

  1. 优雅封装,简化调用
  2. 处理系统bug等,如Android 7.1系统关于Toast的BadTokenException
  3. 解决已知的UI性能缺陷,提高用户体验,如Toast重复弹跳等,关闭通知权限后Toast不显示
  4. 对不同系统版本及厂商设备进行适配
  5. 合理的复用策略,节约内存开销的同时及时解除引用以便被垃圾回收器回收
  6. 根据实际开发中的常见需求,进行功能扩展

效果展示

图片加载失败 图片加载失败
图片加载失败 图片加载失败

代码实现

回到模块导航

如果你对实现感兴趣,请参考我的CSDN博客:

关于作者

回到模块导航

为使SmartShow库更加健壮,如果您在使用过程中发现任何问题,请联系我,我会立即跟进修复和维护。感谢您的支持!

作者:朱志强

微信:w361281607


邮箱:coder_zzq@163.com

引入SmartShow

回到模块导航

第一步,在Project的gradle文件中添加jitpack仓库


allprojects {
 repositories {
 ...
 maven { url 'https://jitpack.io' }
 }
}

第二步,在Module的gradle文件中添加依赖

  • 第一种方式,引入所有模块

 implementation 'com.github.zhiqiang-series.smart-show:all:3.1.9'
 //material库,SmartSnackbar模块需要用到
 implementation 'com.google.android.material:material:1.3.0-alpha04'
 //如需要使用库里的注解功能,需添加注解处理库,否则不必添加
 //只在编译期间起作用,不会打包到apk
 
 annotationProcessor 'com.github.zhiqiang-series.smart-show:annotation-compiler:3.1.9'
  • 第二种方式,自由引入各个模块
    最好保证不同模块的版本号一致,以便其内部依赖的基本库版本相同。

 implementation 'com.github.zhiqiang-series.smart-show:toast:3.1.9'
 //如需要使用库里的注解功能,需添加注解处理库,否则不必添加
 //只在编译期间起作用,不会打包到apk
 annotationProcessor 'com.github.zhiqiang-series.smart-show:annotation-compiler:3.1.9'

 implementation 'com.github.zhiqiang-series.smart-show:dialog:3.1.9'
 //如需要使用库里的注解功能,需添加注解处理库,否则不必添加
 //只在编译期间起作用,不会打包到apk
 annotationProcessor 'com.github.zhiqiang-series.smart-show:annotation-compiler:3.1.9'

 implementation 'com.github.zhiqiang-series.smart-show:topbar:3.1.9'
 //如需要使用库里的注解功能,需添加注解处理库,否则不必添加
 //只在编译期间起作用,不会打包到apk
 annotationProcessor 'com.github.zhiqiang-series.smart-show:annotation-compiler:3.1.9'

 implementation 'com.github.zhiqiang-series.smart-show:snackbar:3.1.9'
 //添加material依赖库
 implementation 'com.google.android.material:material:1.3.0-alpha04'
 //如需要使用库里的注解功能,需添加注解处理库,否则不必添加
 //只在编译期间起作用,不会打包到apk
 annotationProcessor 'com.github.zhiqiang-series.smart-show:annotation-compiler:3.1.9'

第三步,在Application的onCreate方法中初始化


 SmartShow.init(this);

SmartToast部分

回到模块导航

  1. 使用application context,而不是activity,避免因activity生命周期问题引起的各种问题
  2. 复用Toast实例,当Toast正在显示时,多次触发内容和位置均未改变的Toast,不会重复弹出;下一个Toast不会等到上一个Toast的Duration耗尽才弹出
  3. 解决传统复用模式的功能缺陷,如果复用的Toast正在显示,改变其Gravity以改变显示位置会无效,直到消失后再次显示才生效
  4. 可修改Toast默认布局的风格,如背景颜色,文字大小和颜色等
  5. 可为Toast设置自定义布局
  6. 完美解决Android 7.1的系统bug——Toast BadTokenException
  7. 完美解决应用关闭通知权限后Toast不显示问题
  8. 适配android 11对toast的相关限制
  9. 可配置离开当前页面(退出当前activity或进入新的activity),立即消失正在显示的Toast
  10. 结合主流app消息提示的效果,提供info、success、error、warning、complete、forbid、wait、fail 8 种类型的Toast

API

查看API文档

普通 Toast

默认样式:图片加载失败设置背景色:图片加载失败

SmartTopbar部分

回到模块导航

默认样式:图片加载失败设置背景色:图片加载失败

  1. SmartTopbar在功能以及使用上很像一个顶部的Snackbar
  2. 当Topbar正在显示,多次触发时,若msg和actionTex均未改变,则不会重复弹出,否则有弹出效果
  3. 可修改布局风格,如背景颜色,文字大小和颜色等
  4. 可配置离开当前Activity时,立即消失正在显示的Topbar。如,在Activity A 上显示了一个Indefinite Topbar,并且用户没有 点击响应,启动activity B,然后再返回A,原来的Topbar已自动消失
  5. 可通过手势右滑隐藏Topbar

API

详细文档请参阅wiki:

SmartDialog部分

回到模块导航

  1. 解决因activity、fragment生命周期导致的BadTokenException、NullPointException等问题
  2. 提供主流APP中使用的message、input、list、loading等对话框

效果图

图片加载失败

原理

SmartDialog并不是android.app.Dialog的子类,只是个包装器,它内部持有一个真正的Dialog,用来显示。SmartDialog负责处理当Activity、Fragment 生命周期异常时,取消创建或显示所持Dialog。

API

详细文档请参阅wiki:

SmartSnackbar部分

回到模块导航

图片加载失败

  1. 复用Snackbar实例,当Snackbar正在显示,多次触发时,若msg和actionTex均未改变,则不会重复弹出,否则会有弹出效果
  2. 可修改布局风格,如背景颜色,文字大小和颜色等
  3. 可配置离开当前Activity时,立即消失正在显示的Snackbar。如,在Activity A 上显示了一个Indefinite Snackbar,并且用户没有点击响应,启动activity B,然后再返回A,原来的Snackbar已自动消失

API

详细文档请参阅wiki:

About

Toast & Snackbar & TopBar & Dialog

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%

AltStyle によって変換されたページ (->オリジナル) /