Android屏幕适配

本文详细介绍了Android系统的屏幕适配顺序及配置限定符,包括语言、屏幕尺寸、像素密度等参数,并解释了如何使用限定符为不同设备提供最佳用户体验。

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

Android屏幕适配顺序

https://developer.android.com/guide/practices/screens_support.html

配置限定符名称(由高到低)

  1. MCC and MNC
  2. Language and Region 语言和区域 eg. en
  3. Layout Direction 布局方向 eg. ldrtl ldltr
  4. Smallest Width 最小宽度(不考虑是宽度还是高度) swdp eg. sw720dp
  5. Available Width 可用宽度 wdp eg. w720dp 应用为多个资源目录提供不同的此配置值时,系统会使用最接近(但未超出)设备当前屏幕宽度的值。
  6. Avalable Height 可用高度 hdp eg. h720dp
  7. Screen Size 屏幕尺寸 eg.small normal large xlarge
  8. Screen Aspect 屏幕纵横比 eg. long(宽屏) notlong(非宽屏)
  9. Screen Orientation 屏幕方向 eg. port(垂直) land(水平)
  10. UI mode UI模式 eg. car(车载手机) desk(桌面手机) television(电视) appliance(不带显示器) watch(手表)
  11. Night mode 夜间模式 eg. night notnight
  12. Screen pixel density(dpi) 屏幕像素密度, eg. ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi nodpi tvdpi
  13. Touch screen type 触摸屏类型, eg. notouch(设备没有触摸屏) finger(设备有一个专供用户通过手指直接与其交互的触摸屏)
  14. Keyboard availability 键盘可用性 eg. keysexposed keyshidden keyssoft
  15. Primary text inputmethod 主要文本输入法 eg. nokeys qwerty 12key
  16. Navigation key avilability 导航键可用性 eg. navexposed navhidden
  17. Primary non-touch navigation method 主要非触摸导航方法 eg. nonav dpad trackball wheel
  18. Platform Version(API level) 平台版本(API 级别)eg. v3 v4 v7

sizes:

  • small
  • normal
  • large
  • xlarge

Android 3.2(API level 13)之后,sizes被废弃,使用available screen width 来代替。

  • smallestWidth 格式:swdp,eg. sw600dp,sw720dp
  • Avaiable screen width 格式:wdp,eg. w720dp, w1024dp
  • Available screen height 格式:hdp,eg. h720dp, h1024dp

densities:


- ldpi(low) ~ 120dpi
- mdpi(medimu) ~ 160dpi
- hdpi(high) ~ 240dpi
- xhdpi(extra-high) ~ 320dpi
- xxhdpi(extra-extra-high) ~ 480dpi
- xxxhdpi(extra-extra-extra-high) ~ 640dpi
- nodpi 它可用于您不希望缩放以匹配设备密度的位图资源
- tvdpi 介于mdpi和hdpi之间,约为213dpi。主要用于电视

Orientation

  • land
  • port

限定符命名规则

  • 可以为单组资源指定多个限定符,并使用短划线分隔。例如,drawable-en-rUS-land 适用于横排美国英语设备。
  • 这些限定符必须遵循限定符的顺序。即按优先级从高到低。例如:

错误: drawable-hdpi-port/

正确: drawable-port-hdpi/

  • 不能嵌套备用资源目录。例如,您不能拥有 res/drawable/drawable-en/。
  • 值不区分大小写。在处理之前,资源编译器会将目录名称转换为小写,以避免不区分大小写的文件系统出现问题。 名称中使用的任何大写字母只是为了便于认读。
  • 对于每种限定符类型,仅支持一个值。例如,若要对西班牙语和法语使用相同的 Drawable 文件,则您肯定不能拥有名为 drawable-rES-rFR/ 的目录,而是需要两个包含相应文件的资源目录,如 drawable-rES/ 和 drawable-rFR/。然而,实际上您无需将相同的文件都复制到这两个位置。相反,您可以创建指向资源的别名。

Android资源匹配算法

这里写图片描述

系统使用以下逻辑决定要使用的资源:

  1. 淘汰与设备配置冲突的资源文件(屏幕像素密度(dpi)是唯一一个不会因为冲突而淘汰的限定符。)
  2. 选择优先级最高的限定符,先从MCC开始,然后下移
  3. 是否有资源目录包括此限定符?若无,返回第2步,看下一个限定符;若有,继续执行第4步
  4. 淘汰不含此限定符的资源目录
  5. 返回并重复第2步、第3步和第4步,直到只剩下一个目录为止。

注:限定符的优先级,比设备完全匹配的限定符数量更加重要。

参考:

http://blog.youkuaiyun.com/a220315410/article/details/11896189

基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值