Coder Social home page Coder Social logo

smart-show's Introduction

试试作者其他的开源库?

模块导航:

代码实现

回到模块导航

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

关于作者

回到模块导航

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

作者:朱志强

微信:

邮箱:[email protected]

SmartToast部分

回到模块导航

  1. 三种Toast实现策略:系统window + Toast + dialog,根据情况动态择优选择,以适配兼容各种问题
  2. 合理的复用策略,避免Toast重复弹跳
  3. 解决Android 7.1的系统bug——Toast BadTokenException
  4. 配置Toast风格,如背景颜色,文字大小和颜色等
  5. 完美解决应用关闭通知权限后Toast不显示问题
  6. 适配android 11对toast的相关限制
  7. 自定义toast显示时长
  8. 通过注解快速自定义新的Toast
  9. 结合主流app消息提示的效果,提供info、success、error、warning、complete、forbid、wait、fail 8 种类型的Emotion Toast

引入依赖


implementation "io.github.vincent-series:smart-toast:4.1.9"

API

Kotlin User Document
Java User Document

历史版本

查看历史版本

部分效果图

classic toast classic toast classic toast
默认背景 配置背景和Icon
Icon居于文本左侧
配置背景和Icon
Icon居于文本右侧

emotion toast emotion toast emotion toast
成功 警告 禁止

## SmartSnackBar部分

回到模块导航

SmartSnackBar基于原生Snackbar进行封装改造,不仅使用上更加简易,而且进行了功能扩展:

  1. 支持顶部弹出
  2. 支持指定背景颜色
  3. 支持修改message、actionLabel的文本风格,如字体大小、粗细、颜色
  4. 支持显示icon及指定icon位置

引入依赖


implementation "io.github.vincent-series:smart-snackbar:4.1.2"

//material lib,such as 1.5.0
implementation 'com.google.android.material:material:x.y.z'

API

查看API文档

历史版本

查看历史版本

效果图

bottom snackbar bottom snackbar bottom snackbar
classic风格,默认背景 classic风格,自定义背景 material风格,自定义背景

top snackbar top snackbar top snackbar
classic风格,默认背景 classic风格,自定义背景 material风格,自定义背景

SmartDialog部分

回到模块导航

  1. 解决因activity、fragment生命周期导致的BadTokenException、NullPointException等问题
  2. 通过注解快速自定义Dialog
  3. 提供主流APP中使用的message、input、list、loading等对话框

引入依赖


implementation "io.github.vincent-series:smart-dialog:4.1.4"

API文档

Kotlin User Document
Java User Document

历史版本

查看历史版本

效果图

通知对话框 确认对话框 延时确认对话框
显示一条通知消息,只有确认按钮 确认用户操作 延时启用确认按钮
一般用于提示用户谨慎操作

文本输入对话框 数字输入对话框

点击即选列表对话框 单选列表对话框 多选列表对话框
通过点击列表项完成选择 常规单选列表 常规多选列表

加载对话框 加载对话框 加载对话框
BoxSize.LARGE BoxSize.MIDDLE BoxSize.SMALL

smart-show's People

Contributors

vincent-series avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

smart-show's Issues

使用自定义SmartShow异常IllegalArgumentException

Fatal Exception: java.lang.IllegalArgumentException: View=DecorView@7b768cb[LoginActivity] not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:550)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:454)
at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:141)
at android.app.Dialog.dismissDialog(Dialog.java:420)
at android.app.Dialog.dismiss(Dialog.java:402)
at androidx.appcompat.app.AppCompatDialog.dismiss(NiuRenameJava:1)
at com.coder.zzq.smartshow.toast.h.e.d(NiuRenameJava:2)
at com.coder.zzq.smartshow.toast.h.a.run()

请尽快修复哈

建议添加一个Dialog取消的回调方法

建议添加一个Dialog取消的回调方法,当dialog被用户主动back时的回调,类似系统dialog的OnCancelListener回调,这样我们可以方便我们处理一些取消事件,因为不是所有的弹框都会有界面显示的取消按钮

判断 activity的状态是可以操作UI

**
123 * 判断 activity的状态是可以操作UI
124 * @param activity
125 * @return
126 */
127 public static boolean isUpdateActivityUIPermitted(Activity activity) {
128 return activity != null || !activity.isFinishing() || !Utils.isActivityDestroyed(activity);
129 }
130 }
你这个判断有问题吧?activity为null试试。

不兼容华为8.1.0 以上的手机,这个该怎么解决

java.lang.ClassCastException: android.graphics.drawable.GradientDrawable cannot be cast to android.graphics.drawable.NinePatchDrawable
at com.coder.zzq.smartshow.toast.SmartToast.setupPlainToast(SmartToast.java:118)
at com.coder.zzq.smartshow.toast.SmartToast.getToast(SmartToast.java:87)
at com.coder.zzq.smartshow.toast.SmartToast.showInCenter(SmartToast.java:160)
at com.charlie.halffourcourse.base.BaseActivity.showToast(BaseActivity.java:87)

SmartToast.error()在华为手机上有软键盘的情况下不弹出

smart-show:toast:3.0.3 版本
在华为畅享Z 手机上(默认开启了安全键盘模式,关掉就可以了,猜测其他品牌手机的安全键盘模式也会导致该问题)
Android版本: 10
EMUI版本:10.1.1
SmartToast.error()、SmartToast.info()等在已有软键盘的情况下不弹出。

targetSdkVersion=29, Toast崩溃

Android 10将Toast加入了深灰名单,反射会失败,需要考虑使用元反射或者其他手段处理反射获取mTN失败的问题

魅族pro6s toast闪退

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewParent android.view.View.getParent()' on a null object reference
at com.coder.zzq.smartshow.toast.compact.SafeHandler.dispatchMessage(SafeHandler.java:23)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6608)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1134)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)

最新as3.4.0依赖问题

选择全部依赖发现拉下来是空的
选择单独依赖
snackbar报错 ibarshow没有这个

SmartTopbar在用一个activity的连续提示,背景色会缓存上一次的颜色

    public static void showSnackBar(String msg, boolean success) {
        LogUtils.d(success);
        try {
            SmartTopbar.setting().backgroundColor(ColorUtils.getColor(success ? R.color.colorSuccess : R.color.colorError));
            SmartTopbar.get(ActivityUtils.getTopActivity()).show(msg);
        } catch (Exception e) {
            showToast(msg, success);
        }
    }

在用一个activity的连续提示,比如第一次显示的背景色为colorSuccess,那第二次即使设置了colorError,也无效

Rejecting re-init on previously-failed class

Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;

华为机子7.0
版本号为:com.github.the-pig-of-jungle.smart-show:toast:2.6.2

方法多态

比如:SmartToast.showLongInCenter(String text);
您的方法中只能传入string类型的,能否多态方法,传入int值类型,比如 SmartToast.showLongInCenter(int R.string.success)??

无法显示

在关掉activity同时显示toast,经常无法显示。并抛出异常
VirtualToastManager EasyLogger.d("activity is can not show virtual toast dialog ,so do nothing but return.");

SmarToast闪退

一键登录 成功跳转MainActivity

java.lang.NullPointerException

Attempt to read from field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference

字体颜色为白色问题

您好,请问下InputTextDialog的hint、ChooseListDialog的item文字和取消按钮的字体都显示为白色是什么原因?

SmartSnackbar

可修改布局风格,如背景颜色,文字大小和颜色等

如何自定义布局?

Android11 Toast显示闪退

2020-10-26 18:30:24.821 6798-6798/com.lucas.enabot E/om.lucas.enabo: Invalid ID 0x00000000.
2020-10-26 18:30:24.822 6798-6798/com.lucas.enabot D/CompatibilityChangeReporter: Compat change id reported: 147798919; UID 10156; state: ENABLED
2020-10-26 18:30:24.825 6798-6798/com.lucas.enabot E/Toast: getYOffset() shouldn't be called on text toasts, the result may not reflect actual values.
2020-10-26 18:30:24.825 6798-6798/com.lucas.enabot D/AndroidRuntime: Shutting down VM

--------- beginning of crash

2020-10-26 18:30:24.826 6798-6798/com.lucas.enabot E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.lucas.enabot, PID: 6798
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.coder.zzq.smartshow.toast.OriginalToastUI.createToast(OriginalToastUI.java:31)
at com.coder.zzq.smartshow.toast.AbstractToast.showUI(AbstractToast.java:138)
at com.coder.zzq.smartshow.toast.PlainToast.showInCenter(PlainToast.java:50)
at com.coder.zzq.smartshow.toast.SmartToast.showInCenter(SmartToast.java:54)
at com.lucas.enabot.ui.page.login.SignUpActivity$ClickProxy.sendCode(SignUpActivity.java:77)
at com.lucas.enabot.databinding.ActivitySignUpBindingImpl._internalCallbackOnClick(ActivitySignUpBindingImpl.java:684)
at com.lucas.enabot.generated.callback.OnClickListener.onClick(OnClickListener.java:11)
at android.view.View.performClick(View.java:7448)
at android.view.View.performClickInternal(View.java:7425)
at android.view.View.access$3600(View.java:810)
at android.view.View$PerformClick.run(View.java:28305)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

NullPointerException

version : com.github.zhiqiang-series.smart-show:toast:3.1.6

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Toast.setView(android.view.View)' on a null object reference
at y6.i(CompactToast.java:100)
at g7.c(AbstractToastFactory.java:32)
at e7.d(EmotionToastInvoker.java:247)
at e7.c(EmotionToastInvoker.java:142)
at s6.d(SmartToast.java:173)

Android10崩溃NullPointerException

java.lang.NullPointerException
Attempt to read from field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference
com.coder.zzq.smartshow.toast.s.a(VirtualToastManager.java:15)

可否实现在按 back 键的时候消失掉 Toast?

可否实现在按 back 键的时候消失掉 Toast?
微信更改控制项的时候也有一个类似 Toast 的带有转圈的 ProgressBar 和一个文字提示。不知道是不是用 Toast 自定义布局实现的?而且这个控件按 Back 键是可以消失掉的。

单例toast 怎么解决android8.0以上has already been added to the window manager的问题呢

Fatal Exception: java.lang.IllegalStateException: View android.widget.LinearLayout{53bc9d9 V.E...... ......ID 0,0-135,85} has already been added to the window manager.
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:328)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
at android.widget.Toast$TN.handleShow(Toast.java:520)
at android.widget.Toast$TN$1.handleMessage(Toast.java:424)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:192)
at android.app.ActivityThread.main(ActivityThread.java:6792)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.