Android APP多屏幕适配

本文详细介绍了Android应用的多屏幕适配,包括屏幕大小、密度、方向和分辨率的概念,以及如何通过支持不同屏幕类型、提供不同布局和图片来实现适配。还探讨了横竖屏切换的处理方法,并提供了性能优化的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

现在的Android手机屏幕越来越多,工作面试的时候很多同学都不是很清楚屏幕适配的问题, 网上其实有很多类似的说明,其实大同小异都是翻译google 官方贵的说明,希望大家有时间多学习官方api,这里我也做一下笔记:

1、基本概念

1.1 屏幕大小(screen size)

屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸,4.3寸,5寸,7寸等)。

android把屏幕分为以下4种:small,normal,large,extra large等。

1.2 屏幕密度(Screen Density)

一块实际的屏幕区域有多少个像素,一般用dpi衡量(每英寸有多少个点)。

android把屏幕密度分为4种:low,medium,high,extra high。
手机可以有相同的分辨率,但屏幕尺寸可以不相同, 
Diagonal pixel表示对角线的像素值(=),DPI=933/3.7=252 
android将实际的屏幕密度分为四个通用尺寸(low,medium,high,and extra high) 
一般情况下的普通屏幕:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi 
对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚 。

1.3 屏幕方向(orientation)

屏幕方向分为landscape(横屏)和portrait(竖屏)。

1.4 分辨率(Resolution)

屏幕上的总实际像素数。对屏幕进行适配时,一般不关注它的分辨率,只关注它的屏幕大小和密度。与密度无关的像素(Density-independent pixel,dp或dip) -  为了保证你的UI适合不同的屏幕密度,建议你采用dp来定义程序UI。它的计算方法为:px = dp * (dpi / 160)。

sp(scale-independent pixel)

如何分辨一个屏幕是ldpi、mdpi、hdpi的方法:

 

2、怎样适配多种屏幕

2.1 支持屏幕类型

manifest里定义你的程序支持的屏幕类型,相应代码如下:

<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"]   //是否支持小屏
android:normalScreens=["true" | "false"]  //是否支持中屏
android:largeScreens=["true" | "false"]   //是否支持大屏
android:xlargeScreens=["true" | "false"]  //是否支持超大屏
android:anyDensity=["true" | "false"]    //是否支持多种不同密度的屏幕
android:requiresSmallestWidthDp=”integer”
android:compatibleWidthLimitDp=”integer”
android:largestWidthLimitDp=”integer”/>

a. 是否支持多种不同密度的屏幕

android:anyDensity=["true" | "false"]

如果android:anyDensity="true"

指应用程序支持不同密度,会根据屏幕的分辨率自动去匹配。

如果android:anyDensity="false"

应用程序支持不同密度,系统自动缩放图片尺寸和这个图片的坐标。具体解释一下系统是如何自动缩放资源的。

例如我们在hdpi,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值