-
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
关于兼容部分rom缩放模式的问题 #66
Comments
你好,我现在没有你说的此类设备,对你说的这种模式也不是很了解,不过,AndroidAutoSize 提供了 AutoSizeConfig#setScreenWidth 和 AutoSizeConfig#setScreenHeight,你可在进入这个模式,或在这个模式下用户改变高宽时自行将你上面获取到的正确的高宽尺寸赋予给框架 这里还需要注意一点,在此模式下,用户改变高宽时,如果这时布局的所有 View 并没有重新绘制,那今日头条屏幕适配方案对这种模式是无论如何都不可能兼容的,因为今日头条屏幕适配的本质是只是修改 dp 转 px 的算法,影响 px 的最终结果,如果系统不调用 TypedValue#applyDimension 重新设置各个 view 的 px 值,那这个方案也将无济于事 |
这种模式会重建所有的view,我现在的处理方案就是手动使用setScreenWidth 和setScreenHeight是可以的。 |
如果 ScreenUtils.getScreenSize() 中直接修改为返回 context.getResources().getDisplayMetrics() 中的高宽尺寸,按你的说法应该可以解决分屏和缩放模式,但我怕这会引起其他的问题,或者其他用户的某些需求不能实现,所以我还是建议先不修改,继续使用现有的方式,分屏和缩放模式这种特殊需求,通过单独的方法手动设置 AutoSizeConfig#setScreenWidth 和 AutoSizeConfig#setScreenHeight 来解决,所以希望你能提供你设置 AutoSizeConfig#setScreenWidth 的具体代码(在哪个时机调用的),我把这个 issues 提到常见 issues 中,让后续有同样问题的使用者能够看到 |
发现三星的话如果缩放和分屏甚至有可能不重建view,但是把适配方法设置的参数还原了...要比较完美适配可能recyclerview或者viewpager等里面都要手动调用适配方法。。先放着了毕竟三星国内少数,有空再想象有什么比较好的方法 |
我可以按照你上面的建议提供一个在适配函数执行前后都会回调的监听器,你看这样能否解决这个问题,如果不重建 view 的话,那这个方案可能就没办法了,现在的屏幕适配方案基本都要依赖于 View 的绘制来实现... |
AutoSizeConfig.getInstance()
//屏幕适配监听器
.setOnAdaptListener(new onAdaptListener() {
@Override
public void onAdaptBefore(Object target, Activity activity) {
//使用以下代码, 可支持 Android 的分屏或缩放模式, 但前提是在分屏或缩放模式下当用户改变您 App 的窗口大小时
//系统会重绘当前的页面, 经测试在某些机型, 某些情况下系统不会重绘当前页面, ScreenUtils.getScreenSize(activity) 的参数一定要不要传 Application!!!
AutoSizeConfig.getInstance().setScreenWidth(ScreenUtils.getScreenSize(activity)[0]);
AutoSizeConfig.getInstance().setScreenHeight(ScreenUtils.getScreenSize(activity)[1]);
}
@Override
public void onAdaptAfter(Object target, Activity activity) {
}
}); |
是这样的,有部分品牌的rom有特殊的缩放模式(三星,好像魅族也有)
可以看到不同于分屏,这种模式下宽高都可以比较随意的改变。
当改变时view宽高时,按ScreenUtils.getScreenSize的逻辑的话就会发生差异
上面的那个是按ScreenUtils.getScreenSize取的
下面的那个是按context.getResources().getDisplayMetrics()取的
可以看到明显不一致
事实上对普通手机分屏模式下应当也取的不一样
The text was updated successfully, but these errors were encountered: