简洁优雅可点击的 toast 控件,仿手机百度 9.0,无 BadTokenException 风险。

UniversalToast

项目地址:bboylin/UniversalToast 

简介:简洁优雅可点击的 toast 控件,仿手机百度 9.0,无 BadTokenException 风险。

更多:作者   提 Bug   

标签:

UniversalToast:一个简洁优雅的 toast 组件,支持点击和 GIF&安全

features

  • 优雅 & 灵活
  • 可点击 & 可随意设置显示时长
  • 主动避免 android 7.0 使用 toast 可能出现的 BadTokenException
  • 关闭通知权限后依然可以正常弹出
  • 支持加载 GIF,让你的 toast 更生动

Usages

  • step 1 : 添加依赖 ```gradle allprojects { repositories {
      ......
      maven { url 'https://jitpack.io' }
    
    } }

dependencies { ...... implementation 'com.github.bboylin:UniversalToast:v1.0.9' // 请添加上 fresco 的依赖,可以把 fresco 版本替换成最新的 implementation 'com.facebook.fresco:fresco:1.10.0' implementation 'com.facebook.fresco:animated-gif:1.10.0' }


* step 2 : api 类似原生 toast
```java
UniversalToast.makeText(context, text, duration).show();
UniversalToast.makeText(context, text, duration,type).show();

duration 应该是UniversalToast.LENGTH_LONG 和UniversalToast.LENGTH_SHORT其中之一, type 应该是 UniversalToast.UNIVERSAL , UniversalToast.EMPHASIZE , UniversalToast.CLICKABLE 三者之一 , 未指定则默认为 UniversalToast.UNIVERSAL.

  

从左到右依次为UNIVERSALEMPHASIZECLICKABLE样式的 toast,图标文字可设置。

  • 更多 API:

设置 duration 和设置动画的方法被废弃掉了,因为:

  • 不建议自己修改 toast 显示时长
  • 在 android framework 里限制了 windowAnimations 必须是系统动画。
//example
UniversalToast.makeText(context, text, UniversalToast.LENGTH_SHORT, UniversalToast.CLICKABLE)
              .setGravity(gravity,xOffset,yOffset)
              .setBackground(drawable) // 设置背景
              .setColor(R.color.my_color) // 设置背景色
              .setLeftIconRes(R.drawable.my_ic) // 设置 icon,未调用的话 icon 不可见(gone)
              .setLeftGifUri(uri) // 设置 gif 的 uri,设置后 setLeftIconRes 方法会失效,即优先展示 gif
              .setClickCallback(text,R.drawable.my_btn,onClickListener) //设置点击 listener
              .show();

有三种默认的图标提供,用showSuccess(),showWarning() , showError()代替show()即可采用对应的图标。

  

从左到右依次为 : showSuccess , showWarning , showError 的图标(这里只展示了EMPHASIZE类型的 toast,CLICKABLEUNIVERSAL亦可)

注意:

由于 Android 8.0 对悬浮窗权限的限制,使用可点击的 toast(即UniversalToast.CLICKABLE)必须允许悬浮窗权限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

关于如何动态申请权限请参考 demo。
Android 8.0 以下无需悬浮窗权限。

minSdkVersion>=14

notice :

如果你遇到 activity finish 的时候 toast cancel 出现 bug:

请将此处你的 application context 改为 activity 的 context

感谢 : ToastCompat

更新:

没想到有这么多人没用过 fresco。。。在 application 初始化的时候记得初始化 fresco:

Fresco.initialize(ctx);

不想引入 fresco 就把版本换成 1.0.8

猜你喜欢

转载自blog.csdn.net/u014608640/article/details/84643302
今日推荐