Closed StriveXiao closed 3 years ago
new EasyWindow<>(this)
.setDuration(1000)
.setContentView(Toaster.getStyle().createView(this))
.setText(android.R.id.message, "测试")
.setGravity(Gravity.BOTTOM)
.setYOffset(100)
.show();
finish();
小伙子,EasyWindow 是用 WindowManager 来实现的,在没有悬浮窗权限的情况下,只能依附当前 Activity 才能显示,而你跳转到新页面的时候,新 Activity 已经将旧 Activity 覆盖了,所以导致你没看到有显示的情况。
至于 Toaster 为什么可以?因为你跳转新 Activity 的时候,里面是加了延迟显示,获取到的栈顶 Activity 是新的 Activity,而不是旧的 Activity,用的是新的 Activity 对象来显示 Toast,所以才能正常显示。
这个问题既不属于 Toaster 的 bug,也不属于 EasyWindow 的 bug,如果你要实现那种效果也不是没有办法,你在 finish 旧 Activity 的时候做一下延迟任务,在里面显示 EasyWindow,但是 XToast 的构造函数你要传入新的 Activity 的对象,你可以通过获取栈顶 Activity 来获取。
小伙子,你看看这边还有其他问题不,没有的话我就关闭 issue 了。
没有了,非常感谢
startActivity(new Intent(this,TestActivity.class)); // 将 Toaster 中的 View 转移给 EasyWindow 来显示 new EasyWindow<>(this) .setDuration(1000) .setContentView(Toaster.getStyle().createView(this)) .setText(android.R.id.message, "跳转下一个页面") .setGravity(Gravity.BOTTOM) .setYOffset(100) .show();