SelectSex

Results 25 comments of SelectSex

> 反射没有取到application,是不是还没有初始化 首先需要理解,当前是自定义view在studio的预览,app不会运行,所以初始化无从谈起,这里就是studio执行自定义view代码流程的死板,机械之处。自定义view预览是要执行代码流程的,但是初始化类型的对象,自定义view预览都是默认按照null去执行代码流程的。这个问题,我在自定义view中使用liveeventbus的时候也出现了,无法预览,于是把liveeventbus的aar包反编译后改了反射获取application的代码让,为空不干任何事,编译也通过了,反正反射获取application基本上在真的app运行的时候是不会为空。studio太差劲了

![image](https://user-images.githubusercontent.com/90268640/176654585-6242b3e5-11ed-4592-8e07-e3b242cda9bd.png) ![image](https://user-images.githubusercontent.com/90268640/176654678-1be1b2c1-da6f-417e-a0fe-cd5b44249f2b.png) 这样应该能保证极端情况,且不会循环layout了,isReselectWhenLayout还是有点用的,但是无限调用太恐怖了,所以,我们在初始化adapter和调用notifyDataSetChanged的时候 将isReselectWhenLayout变成true,且layout只调用一次就改为false防止无限调用, 至于打印 requestLayout() improperly called by *****Fragment$initTabLayout$1$1$1$getTitleView$1{64008db VFED..C.. ......ID 241,0-440,115} during layout: running second layout pass 我们可以 ![image](https://user-images.githubusercontent.com/90268640/176655154-2dcf628a-9331-4327-a4f8-f082e0b4d4b2.png)

同时还发现只要设置了动画,则 哪怕我设置了 bindView.root.isInvisible = true ,也会显示view,就很无奈了

动画设置,改成了再init中动态设置,而不是重写 onCreateShowAnimation 方法来设置动画

> 确实是个神奇的需求……不过show之后立马dismiss也确实需要考虑,后续我弄一下。(总算有个更新动力了) 神奇的是,我这边现在的方案在init中直接设置show成功的监听来执行dismiss,因为我有个弹窗使用了dismiss(false)传参, 然后我就发现神奇地方了, 会崩溃,仔细看了源码,是show成功监听中是不能立即调用dismiss的如果调用也是默认走的dismiss(true),表示真正的dismiss是延时处理的,如果传false表示立即执行dismiss,会在“razerdp.basepopup.PopupDecorViewProxy#onApplyWindowInsets”中因为mHelper先被重置为null而空指针异常。 此时我又有了骚操作,在 **BaseActivity**中**oncreate**中**预加载**了一个 **LoadingPopWindow** 又有了新的发现,我的首页activity,多个item都可以跳转不同的新activity,每个**新activity**打开都会预加载当前activity的**LoadingPopWindow**,我发现了10个新页面有5个新页面在预加载完成**LoadingPopWindow**然后再**LoadingPopWindow**dismiss的时候,发生了activity**视觉透明**看到下面的**老activity**的**闪动效果** 经排查我试着自己设置延时500ms执行dismiss,可以消除这个现象。这就尴尬了,300ms还不影响使用,500ms就已经有点影响效果,用户打开新页面快速返回或者点击新页面的内容,会因为透明的预加载 **LoadingPopWindow**未dismiss而被拦截掉点击事件。 所以现在,我还是将预加载不影响使用的实现方案交给可爱的作者大佬来解决了,辛苦了,大佬

对了,经排查我试着自己设置延时500ms执行dismiss,可以消除这个现象 随着减少这个500ms为400,300,200,那么发生视觉透明的闪动效果的出现次数越高。

> ![image](https://user-images.githubusercontent.com/26214519/180172328-426768e9-e78d-49f7-92e2-51ab89f282c6.png) 看你的选择城市截图,是小白条没有适配吗,这个我和作者讨论过,在低版本红米出现过, 具体可以看 https://github.com/razerdp/BasePopup/issues/452 解决方案是,使用BasePopup-3.2.1-SNAPSHOT,然后**不要**再xml中使用android:fitsSystemWindows,自己通过 setOverlayNavigationBarMode(BasePopupFlag.OVERLAY_CONTENT) //设置内容区域沉浸到导航栏 setOverlayStatusbarMode(BasePopupFlag.OVERLAY_MASK) 来控制是否限制内容扩充到,状态栏和导航栏小白条,

BackgroundLibrary 作者有解决方案,https://github.com/JavaNoober/BackgroundLibrary/wiki/9%E3%80%81%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F

[live_event_bug_x1.8.0.zip](https://github.com/JeremyLiao/LiveEventBus/files/7526215/live_event_bug_x1.8.0.zip) 将我正在用的1.8.0都aar反编译修改了 getApplicationByReflect方法,引入项目,预览终于正常了 我修改的代码并不会对app运行时造成错误,只是修改了npe异常的使用,好让 预览编译顺利运行下去

感谢感谢,太谢谢了,好几年的开发了,这个属性都没注意过! Barry Lee ***@***.***> 于 2022年1月4日周二 下午5:48写道: > 想预览用isInEditMode就行了。 > > — > Reply to this email directly, view it on GitHub > , > or unsubscribe > > ....