因为该方案确实值得咱们使用,因此借助你们开源的力量一块儿来完善,此次你值得尝试。java
Android 屏幕适配从未如斯简单(8月10日最终更新版),因为文章写的较早,请用 1.19.2 版本及以上来完美适配。android
建立新的模拟器设备,而后修改分辨率和屏幕尺寸使其达到 mdpi 便可。git
因为 WebView 初始化的时候会还原 density 的值致使适配失效,继承 WebView,重写以下方法:github
@Override
public void setOverScrollMode(int mode) {
super.setOverScrollMode(mode);
ScreenUtils.restoreAdaptScreen();
}
复制代码
后面提到的 Dialog 和 Toast 其实均可以用用这种解决方案,就是在 inflate
相关 View 以前调用 ScreenUtils#cancelAdaptScreen
,show
以后调用 ScreenUtils#restoreAdaptScreen
便可,这样就可让系统 View 显示正常尺寸。web
若是你适配传入的不是 mdpi 下的尺寸,而是 xxhdpi,那么可能会致使 AlertDialog 跑到屏幕外边,因此在文章中我也提到了只用 mdpi 来适配,正常状况的 mdpi 是会呈现比较小的尺寸,若是你要取得和原生一致的效果,那就利用上面提到的「如何让系统 View 尺寸正常」封装下在 Dialog 显示前调用 ScreenUtils#cancelAdaptScreen
,Dismiss 后根据需求看是否须要 ScreenUtils#restoreAdaptScreen
;或者你也能够给 Dialog 定制统一的 styles 来解决尺寸(<item name="android:windowMinWidthMinor">576dp</item> <!-- 占 80% 屏宽 720 * 0.8 = 576 -->
)、字体的问题。固然,若是项目组有封装好的 Dialog,那么统一修改这个 Dialog 库的尺寸便可。app
使用 1.19.1 及以上版本的 ToastUtils 来显示 Toast 不会有这个问题(解决之道就是上面提到的「如何让系统 View 尺寸正常」),固然你也能够本身封装不用个人 ToastUtils;或者参照 CustomToast 来自定义 Toast 布局。ide
可使用 sw 的方案来解决尺寸更大的设备能够显示更多的内容,本方案和 sw 并无冲突,因此若是你须要在全面屏或者大屏设备显示更多的内容能够建立新的 dimens 来解决,这样就能够作到在某一尺寸范围内的设备显示效果都一致,解决了某些人老是口口声声说「更大的屏幕就应该获取更多的信息啊」。布局