Android supports-screens 屏幕适配

news/2024/7/21 4:33:28 标签: android, 电脑

基本概念

supports-screens用于设置屏幕相关,处于Manifest的子标签中。

使您能够指定应用支持的屏幕尺寸,并为比应用支持的最大屏幕还大的屏幕启用屏幕兼容性模式。请务必始终在应用中使用此元素指定应用支持的屏幕尺寸。

注意:建议不要在屏幕兼容性模式下运行应用,因为它会因缩放而导致界面中出现像素化和模糊。让应用在大屏幕上正常运行的正确方法是遵循屏幕兼容性概览中的说明,并为不同尺寸的屏幕提供备用布局。

如果应用可以适当调整大小以填充整个屏幕,那么它就“支持”指定的屏幕尺寸。由系统应用的标准大小调整方式对于大多数应用来说效果不错,您无需执行任何额外操作即可让应用在比手机更大的屏幕上运行。不过,通常需要通过提供备用布局资源来优化应用的界面,以适应不同的屏幕尺寸。例如,与在手机上运行时相比,您可能需要修改 activity 在平板电脑上的布局。

不过,如果应用在调整大小以适应不同的屏幕尺寸时效果不佳,您可以使用 元素的属性来控制是将应用分发到较小的屏幕,还是使用系统的屏幕兼容性模式放大(“缩放”)界面以适应较大的屏幕。如果您未针对较大屏幕尺寸进行设计,并且标准大小调整方式无法达到理想的效果,则屏幕兼容性模式会通过模拟标准尺寸屏幕和中密度,然后再放大来缩放界面,以使其填充整个屏幕。请注意,这会导致界面像素化和变模糊,因此最好针对大屏幕优化界面。

屏幕兼容性模式简介

只有在万不得已时,才可以针对无法充分利用较大屏幕尺寸的应用使用屏幕兼容模式。建议不要在此模式下运行应用,因为它会导致用户体验不佳。屏幕兼容性模式有两种不同的版本,具体取决于运行应用的设备版本。

在 Android 版本 1.6 至 3.1 中,系统会在“邮票式”窗口中运行您的应用。它会模拟 320dp x 480dp 屏幕,并用黑色边框填充屏幕的剩余区域。

在 Android 3.2 及更高版本上,系统会像在 320dp x 480dp 屏幕上一样绘制布局,然后将其放大以填充屏幕。这通常会导致界面中出现模糊和像素化之类的失真。

android.com/guide/topics/manifest/supports-screens-element?hl=zh-cn">语法

<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"/>

属性

androidresizeable_30">android:resizeable

指示应用是否可根据不同的屏幕尺寸调整大小。此属性的默认值为 true。如果设置为 false,则系统在大屏幕上会以屏幕兼容性模式运行应用。
此属性已弃用。引入此属性是为了帮助应用从 Android 1.5 过渡到 1.6(首次引入对多屏幕的支持)。请不要使用此属性。

androidsmallScreens_33">android:smallScreens

指示应用是否支持较小屏幕这种设备类型。 小屏幕指的是宽高比小于“标准”(传统 HVGA)屏幕的屏幕。不支持小屏幕的应用将不适用于采用外部服务(如 Google Play)的小屏幕设备,因为平台几乎无法让此类应用在较小屏幕上正常运行。此属性的默认值为 “true”。

androidnormalScreens_35">android:normalScreens

指示应用是否支持“标准”屏幕这种设备类型。一直以来,标准屏幕是指 HVGA 中密度屏幕,但 WQVGA 低密度和 WVGA 高密度也被视为标准屏幕。此属性的默认值为“true”。

androidlargeScreens_37">android:largeScreens

指示应用是否支持较大屏幕这种设备类型。 大屏幕指的是比“标准”手机屏幕大得多的屏幕,虽然应用可以依赖系统调整大小来填充屏幕,还是可能需要特别注意,以充分利用此类屏幕。
此属性的默认值实际上在某些版本之间会有所不同,因此最好始终明确声明此属性。请注意,将其设置为“false”一般会启用屏幕兼容性模式。

androidxlargeScreens_40">android:xlargeScreens

指示应用是否支持超大屏幕这种设备类型。 超大屏幕指的是比“大”屏幕大得多的屏幕(例如平板电脑或更大的设备),虽然应用可以依赖系统调整大小来填充屏幕,还是可能需要特别注意,以充分利用此类屏幕。
此属性的默认值实际上在某些版本之间会有所不同,因此最好始终明确声明此属性。请注意,将其设置为“false”一般会启用屏幕兼容性模式。

androidanyDensity_43">android:anyDensity

指示应用是否包含用于适应任何屏幕密度的资源。
对于支持 Android 1.6(API 级别 4)及更高版本的应用,此属性默认为“true”。不应将其设置为“false”,除非您非常确定有必要这样设置才能让应用正常运行。只有在您的应用直接操控位图时才有必要停用此属性(如需了解详情,请参阅支持多种屏幕文档)。

androidrequiresSmallestWidthDp_46">android:requiresSmallestWidthDp

指定所需的最小 smallestWidth。smallestWidth 是必须为应用界面提供的屏幕空间的最短边尺寸(以 dp 为单位),也是可用屏幕的两个尺寸中的最短尺寸。因此,为了使设备与您的应用兼容,设备的 smallestWidth 必须等于或大于此值。(通常,无论屏幕的当前方向如何,此值都是布局支持的“最小宽度”。)
例如,典型手机屏幕的 smallestWidth 为 320dp,7 英寸平板电脑的 smallestWidth 为 600dp,10 英寸平板电脑的 smallestWidth 为 720dp。这些值通常为 smallestWidth,因为它们是屏幕可用空间的最短边尺寸。

与您的值进行比较的尺寸将屏幕装饰和系统界面都考虑在内。例如,如果设备的屏幕上有一些永久性界面元素,则系统会将设备的 smallestWidth 声明为小于实际屏幕尺寸的尺寸,从而考虑这些界面元素,因为这些界面元素是您的界面无法使用的屏幕像素。因此,您使用的值应该是布局所需的最小宽度,无论当前屏幕方向如何。

如果您的应用针对较小屏幕尺寸(小至“小”尺寸或最小宽度 320dp)适当调整大小,则无需使用此属性。否则,您为此属性使用的值应与应用针对最小屏幕宽度限定符 (swdp) 所使用的最小值一致。

注意:Android 系统不会注意此属性,因此它不会影响应用在运行时的行为方式。不过,您可以使用此属性在 Google Play 等服务上为应用启用过滤功能。但是,Google Play 当前不支持使用此属性进行过滤(在 Android 3.2 上)。因此,如果您的应用不支持小屏幕,则应继续使用其他尺寸属性。

该属性是 API 级别 13 中的新增属性。

androidcompatibleWidthLimitDp_58">android:compatibleWidthLimitDp

通过此属性,您可以指定应用支持的“最小屏幕宽度”最大值,从而启用屏幕兼容性模式作为用户可选的功能。如果设备的可用屏幕最小边大于您在此处指定的值,则用户仍可以安装应用,但要在屏幕兼容性模式下运行该应用。默认情况下,屏幕兼容性模式处于停用状态,系统通常会调整布局大小以适应屏幕大小,但用户可以使用系统栏中出现的按钮启用和停用屏幕兼容性模式。
如果您的应用与所有屏幕尺寸兼容,并且其布局可以适当调整大小,则无需使用此属性。

注意:目前,屏幕兼容性模式仅模拟宽度为 320dp 的手机屏幕,因此如果 android:compatibleWidthLimitDp 的值大于 320,则不会应用屏幕兼容性模式。

该属性是 API 级别 13 中的新增属性。

androidlargestWidthLimitDp_66">android:largestWidthLimitDp

通过此属性,您可以指定应用支持的“最小屏幕宽度”最大值,从而强制启用屏幕兼容性模式。如果设备的可用屏幕最小边大于您在此处指定的值,那么应用会在屏幕兼容性模式下运行,且用户不能停用该模式。
如果您的应用与所有屏幕尺寸兼容,并且其布局可以适当调整大小,则无需使用此属性。否则,您应首先考虑使用 android:compatibleWidthLimitDp 属性。只有在以下情形才应使用 android:largestWidthLimitDp 属性:您的应用在针对较大屏幕调整大小时无法正常运行,并且屏幕兼容性模式是用户使用您的应用的唯一途径。

现状

屏幕适配的问题在目前的使用中使用还是比较少的,如果后续有使用了可以再关注。


http://www.niftyadmin.cn/n/129254.html

相关文章

Java知识复习(十六)MyBatis

1、什么是MyBatis Mybatis是一个半ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;它内部封装了JDBC&#xff0c;加载驱动、创建连接、创建statement等繁杂的过程&#xff0c;开发者开发时只需要关注如何编写SQL语句&#xff0c;可以严格控制sql执行性能&#xff0c…

使用R语言包clusterProfiler做KEGG富集分析时出现的错误及解决方法

使用enrichKEGG做通路富集分析时&#xff0c;一直报错&#xff1a;显示No gene can be mapped....k <- enrichKEGG(gene gene, organism "hsa", pvalueCutoff 1, qvalueCutoff 1)但是之前用同样的基因做分析是能够成功地富集到通路&#xff0c;即便是网上的数据…

【微信小程序开发全流程】篇章0:基于JavaScript开发的校园综合类微信小程序的概览

基于JavaScript开发的校园综合类微信小程序的概览 本文仅供学习&#xff0c;未经同意请勿转载 一些说明&#xff1a;上述项目来源于笔者我本科大三阶段2019年电子设计课程项目&#xff0c;在这个项目中&#xff0c;我主要是负责的部分有前端&#xff0c;前后端的对接&#xf…

平安大视野前瞻2023投资策略:资产格局“危中有机”,关注科技、绿色、安全领域

3月3日&#xff0c;平安私人银行全新云端沙龙《平安大视野》第一站在杭州举办&#xff0c;活动聚焦2023年宏观经济展望&#xff0c;邀请中国首席经济学家论坛理事、鹏扬基金首席经济学家陈洪斌&#xff0c;平安私人银行首席策略分析师彭伟伟就国内外宏观经济变化和资产配置策略…

云原生系列之使用prometheus监控nginx

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文主要讲解云原生系列之使用prometheus监控nginx 文章收录到 csdn 我是沐风晓月的博客【prometheus监控系列】专栏&#xff0c;此专栏是沐风晓月对云原生prometheus的的总结&#xff0c;希望能够加深自…

unity ECS简介

什么是Unity ECSUnity ECS是Unity引擎中的一种高性能游戏开发架构&#xff0c;它采用了基于数据的设计思路&#xff0c;与传统的面向对象编程不同。它的目标是提高游戏的性能和可伸缩性。Unity ECS通过实体&#xff08;Entity&#xff09;、组件&#xff08;Component&#xff…

LeetCode·每日一题·1096. 花括号展开 II·DFS+HASH

作者&#xff1a;Guang链接&#xff1a;https://leetcode.cn/problems/brace-expansion-ii/solutions/997719/xss1096-hua-gua-hao-zhan-kai-iiby-zgh-by-vumf/来源&#xff1a;力扣&#xff08;LeetCode&#xff09;著作权归作者所有。商业转载请联系作者获得授权&#xff0c;…

CF756div3 vp

又被薄纱了&#xff0c;rk就不放了&#xff0c;好丢人QwQDashboard - Codeforces Round 756 (Div. 3) - CodeforcesA. Make Even小分类讨论题意&#xff1a;给定一个数&#xff0c;每次操作可以选取其前缀然后翻转其前缀&#xff0c;问你最少操作几次可以把该数变为偶数思路&am…