-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Activity的方向是横屏的,手机方向竖屏,进入Activity的时候会加载网络数据延迟来绘制UI,如果进入Activity的瞬间应用缩小到后台,这时候会出现适配失效的bug。 #288
Comments
我试过了这个方法去设置了的,还是一样存在这个问题。旋转屏幕如果正好在绘制UI,就会出现上述的问题。 |
你就屏幕旋转完,设置好正确的屏幕尺寸在绘制ui。 |
如果在一个横屏页面给上一个竖屏页面发消息弹dialog,这时候是这个dialog显示是不正确的。。场景和业务只能是横屏给发,不能竖屏检查。。 |
横屏,设置高度为375,然后去微信分享,再取消回来,也会适配失效。toast都没法正常显示了,dialog也一样 |
不用旋转也是会出现这类情况,常驻后台一天 在应用不被杀死的情况 进入应用 整个都ui都失效了 |
上面说的所有问题,都是在 UI 显示之前,density未能正确切换成期望的值,导致适配失效,框架只会在 Activity setContentview 之前,重新计算并且设置 density,其他所有的未知的业务流程,都需要你自己在 UI 显示之前重新计算并设置一个你期望的 density,比如上面所说进入后台后,再回到前台,App 会在什么时候回到前台,框架并不知道,而 density 是整个进程公有的,所以在回到前台前并不保证它的值没被其他代码所修改,所以这里需要你自己去设置一个正确的值,再刷新 UI。 所有原理包括出现问题的原因,都在 这里 讲的很清楚。 |
BaseActivity 重写下就搞定了,怎么转、怎么测试都没事。 override fun getResources(): Resources {
if (Looper.getMainLooper().thread == Thread.currentThread()) AutoSizeCompat.autoConvertDensity(
super.getResources(), 1024f, AutoSizeConfig.getInstance().screenWidth > AutoSizeConfig.getInstance().screenHeight
)
return super.getResources()
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) AutoSize.autoConvertDensity(this, 1024f, true)
} |
我这样写 还真测出事了 |
可以的,有用 |
Environment
Bug Description:
Log:
Screenshot
Related Code:
Others:
The text was updated successfully, but these errors were encountered: