Android-屏幕适配(smallestWidth适配/今日头条屏幕适配方案终极版)

本文介绍了Android屏幕适配的两种方法:今日头条适配方案和smallestWidth方式。今日头条方案通过修改density实现统一dp值,而smallestWidth适配基于设备最小宽度dp值匹配资源。文章详细解释了smallestWidth的概念、计算方法和dimens.xml生成原理,并探讨了两种方法的优缺点。
摘要由CSDN通过智能技术生成

(一)今日头条屏幕适配方案

总的来说它是通过修改density值,强行把所有不同尺寸分辨率的手机的宽度dp值改成一个统一的值,这样就解决了所有的适配问题。

其适配方案的核心原理在于,根据以下公式算出 density (density 的意思就是 1 dp 占当前设备多少像素)

当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = density

屏幕总宽度就是 屏幕宽与高相比较最小的那个 例如: 屏幕像素为 1920 * 1080 则屏幕总宽度为 1080
详细介绍:
https://mp.weixin.qq.com/s/d9QCoBP6kV9VSWvVldVVwA
https://www.jianshu.com/p/55e0fca23b4f

另外推荐一个根据今日头条技术封装好的屏幕适配框架:
AndroidAutoSize 框架

使用:
一.

implementation 'me.jessyan:autosize:1.0.0'

使用:
在 AndroidManifest 中填写全局设计图尺寸 (单位 dp),如果使用副单位,则可以直接填写像素尺寸,不需要再将像素转化为 dp

<manifest>
    <application>            
        <meta-data
            android:name="design_width_in_dp"
            android:value="360"/>
        <meta-data
            android:name="design_height_in_dp"
            android:value="640"/>           
     </application>           
</manifest>

更多详细用于查看 demo-subunits


(二)smallestWidth方式适配

以下内容来自 https://www.jianshu.com/p/2aded8bb6ede 我只是将主要的罗列出来


什么是 smallestWidth

smallestWidth 翻译为中文的意思就是 最小宽度,那这个 最小宽度 是什么意思呢?

系统会根据当前设备屏幕的 最小宽度 来匹配 values-swdp,为什么不是根据 宽度 来匹配,而要加上 最小 这两个字呢?

这就要说到,移动设备都是允许屏幕可以旋转的,当屏幕旋转时,屏幕的高宽就会互换,加上 最小 这两个字,是因为这个方案是不区分屏幕方向的,它只会把屏幕的高度和宽度中值最小的一方认为是 最小宽度,这个 最小宽度 是根据屏幕来定的,是固定不变的,意思是不管您怎么旋转屏幕,只要这个屏幕的高度大于宽度,那系统就只会认定宽度的值为 最小宽度,反之如果屏幕的宽度大于高度,那系统就会认定屏幕的高度的值为 最小宽度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值