Comments (8)
上面的日志显示,你只是以宽为基准,当然只能让宽度占满屏幕
没有什么基准高,基准宽这么一说,只能以高或宽中的一个作为基准,建议看看我的 文章,原理看懂了才会用,以下为文章内容
要看懂下面的内容,还得明白,今日头条的适配方式,今日头条适配方案默认项目中只能以高或宽中的一个作为基准,进行适配,为什么不像 AndroidAutoLayout 一样,高以高为基准,宽以宽为基准,同时进行适配呢
这就引出了一个现在比较棘手的问题,大部分市面上的 Android 设备的屏幕高宽比都不一致,特别是现在大量全面屏的问世,这个问题更加严重,不同厂商推出的全面屏手机的屏幕高宽比都可能不一致
这时我们只以高或宽其中的一个作为基准进行适配,就会有效的避免布局在高宽比不一致的屏幕上出现变形的问题
你设置的设计图尺寸,宽是375dp,高是667dp,其实在框架适配时只会用到其中的一个,当以宽为基准进行适配时,用的就是宽度 375 dp,当以高度为基准进行适配时,用的就是高度 667 dp
在你当前页面以宽为基准进行适配时,在布局中有一个 View 宽度为 375dp,那这个 View 的宽度就刚好覆盖屏幕宽度,和屏幕一样宽,但如果这个 View 高为 667 dp 就不可能刚好覆盖屏幕高度,在有些设备会超出屏幕高度,有些会低于
如果你当前页面以高为基准进行适配,这时 667 dp 高度的 View 就可以刚好覆盖屏幕高度,在任何设备上都会刚好覆盖屏幕高度,不会过高,也不会过低,但是 375 dp 的宽度,就又可能会出现无法覆盖屏幕宽度的问题,在有些设备会超出屏幕宽度,有些会低于
它只能以高宽中的一个作为基准进行适配,这是为了在屏幕高宽比和设计图高宽比不同的设备上,也能正常适配,不是所有设备的屏幕高宽比都和设计图高宽比一样,你如果让设计图在所有设备上高宽都全部填充屏幕,那在高宽比与设计图高宽比不同的屏幕上,你的 View 肯定会严重变形,懂了原理才能刚好的使用框架,建议你好好看看我的文章
框架默认以宽度为基准进行适配,如果要想以高度为基准 AutoSizeConfig.getInstance().setBaseOnWidth(false)
from androidautosize.
@androidmoyan 以宽度为基准时,只是在高度上不能像宽度一样刚好填满屏幕, 并不是就完全不能适配了,你可以使用 weight、RelativeLayout、约束布局、Recyclerview 等控件来实现,你之前没使用屏幕适配方案时怎么布局,现在就怎么样布局,以前没使用屏幕适配方案时,你也不可能全部 view 的所有属性都填写精确的 size 吧,只是屏幕适配方案让这个变成可能,这个就不多介绍了,算是基础了,以高度为基准也同理
from androidautosize.
@xadlovezy 如果你说的用 dimens 的适配方案是 SmallestWidth(最小宽度)适配方案,那这种方式原理也差不多,也是只能以宽为基础进行适配,https://www.jianshu.com/p/2aded8bb6ede ,只要有屏幕高宽比和你的设计图高宽比不一致的设备存在,要想强制做到让布局根据设计图的高宽比例,等比例同时拉伸并填满屏幕,反而会导致 View 在某些设备上适配的畸形
AndroidAutoLayout 就是默认所有设备的屏幕高宽比都和设计图的高宽比(比如 16:9)保持一致,所以在某些屏幕高宽比与设计图高宽比不一致的设备上会出现 问题 问题,这些问题的解决方案就是将布局高度同样按照设计图宽度的拉伸比例进行适配,放弃之前布局高度以设计图高度,布局宽度以设计图宽度的适配方式,因为这样的设计本身就存在问题,不适用于现在这种全面屏普及的时代
from androidautosize.
试了下宽度是适配的,高感觉有点问题
from androidautosize.
嗯好的充分了解了,感谢楼主的解释
from androidautosize.
基准是375 * 667(dp)的设计图, 如果以宽度为基准, 那有的手机分辨率是2160* 1080 (px) 或者是 1880* 1080这种 有点不是正规的手机分辨率, 那肯定是适配不好的,请问有什么解决方案没有,我看了#8的,您好像没有给出什么好的回答啊!坐等大神回复
from androidautosize.
还不如直接用dimens,至少到宽高同时适配,保证和设计图一样的比例
from androidautosize.
关于 AndroidAutoLayout 的适配方式,和 AndroidAutoSize 的适配方式,建议看看这篇 文章
from androidautosize.
Related Issues (20)
- 关于.9.png图的位置放置问题
- 改变density导致滑动手势的判定出现问题,已附上解决方案。
- 项目中用了这个库,折叠屏如何适配?
- 请问现在2023年了,安卓官方还没弄好自动适配? HOT 1
- 虚拟导航栏适配问题 HOT 1
- 使用了AndroidAutoSize后,系统设置改变字体,切回App, Activity重建,但是布局文件内的字体不会自动适配改变 HOT 4
- 在使用了腾讯的超级播放器的页面中适配,在夜神模拟器上十分卡顿 HOT 2
- android该方案的实现思路有对应的flutter解决方案吗 HOT 1
- 广告
- Vivo X Fold2 折叠屏多窗模式下 resource的xdpi无法被修改
- Android 14 Cannot showing default system SoftKeyboard HOT 5
- 华为折叠屏折叠状态下和展开状态下的问题
- 统一隐私政策之前初始化sdk,因为调用了getApplicationInfo提示不合规,怎么处理 HOT 2
- Android 14 适配问题
- Android 14 系统软键盘无法弹出 HOT 6
- Compose 没有效果
- 平板横屏项目DialogFragment高度显示不全问题 HOT 4
- Android14 设置不跟随系统字体大小改变失效 HOT 3
- Android 14部分手机输密码时黑屏
- 设置resizeableactivity=false并且页面横屏在小米上不兼容 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from androidautosize.