当前位置: 首页 > news >正文

Android supports-screens 屏幕适配

基本概念

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

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

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

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

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

屏幕兼容性模式简介

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

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

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

语法

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

属性

android:resizeable

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

android:smallScreens

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

android:normalScreens

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

android:largeScreens

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

android:xlargeScreens

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

android:anyDensity

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

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 中的新增属性。

android:compatibleWidthLimitDp

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

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

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

android:largestWidthLimitDp

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

现状

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

相关文章:

Android supports-screens 屏幕适配

基本概念 supports-screens用于设置屏幕相关&#xff0c;处于Manifest的子标签中。 使您能够指定应用支持的屏幕尺寸&#xff0c;并为比应用支持的最大屏幕还大的屏幕启用屏幕兼容性模式。请务必始终在应用中使用此元素指定应用支持的屏幕尺寸。 注意&#xff1a;建议不要在屏…...

操作系统基础知识介绍之Mixed CriticalitySystems——混合关键系统

一、发展背景 在嵌入式场景中&#xff0c;虽然Linux已经得到了广泛应用&#xff0c;但并不能覆盖所有需求&#xff0c;例如高实时、高可靠、高安全的场合。这些场合往往是实时操作系统 的用武之地。有些应用场景既需要Linux的管理能力、丰富的生态又需要实时操作系统的高实时、…...

【数据结构初阶】详解链表OJ题

目录一.删除链表中等于给定值的节点二.合并有序链表并返回三.链表的回文结构1.反转单链表2.返回非空链表的中间节点四.输出链表倒数第K个节点五.基于给定值x分割单链表六.返回两个链表的第一个中间节点一.删除链表中等于给定值的节点 我们先来看第一题(题目链接): 因为我们需…...

Java基本数据类型变量自动提升、强制类型转换、String基本类型使用

文章目录基本数据类型变量自动提升特殊情况强制类型转换String基本类型使用基本数据类型变量自动提升 规则&#xff1a; 将取值范围小&#xff08;或容量小&#xff09;的类型自动提升为取值范围大&#xff08;或容量大&#xff09;的类型 。 byte、short、char-->int-->…...

Redis锁与幂等性不得不说的故事

前言&#xff1a; 相信很多小伙伴对缓存锁都不陌生&#xff0c;但是简单的缓存锁想要用好还是需要一些功力。本文总结了笔者多年使用缓存所的一些心得&#xff0c;欢迎交流探讨~ 幂等模型&#xff1a; 幂等场景一般由查重写入两步操作组成&#xff0c;两步操作组成一个最小完…...

Spark 应用调优

Spark 应用调优人数统计优化摇号次数分布优化Shuffle 常规优化数据分区合并加 Cache优化中签率的变化趋势中签率局部洞察优化倍率分析优化表信息 : apply : 申请者 : 事实表lucky : 中签者表 : 维度表两张表的 Schema ( batchNum&#xff0c;carNum ) : ( 摇号批次&#xff0c…...

synchronized 与 volatile 关键字

目录1.前言1.synchronized 关键字1. 互斥2.保证内存可见性3.可重入2. volatile 关键字1.保证内存可见性2.无法保证原子性3.synchronized 与 volatile 的区别1.前言 synchronized关键字和volatile是大家在Java多线程学习时接触的两个关键字&#xff0c;很多同学可能学习完就忘记…...

【0成本搭建个人博客】——Hexo+Node.js+Gitee Pages

目录 1、下载安装Git 2、下载安装Node.js 3、使用Hexo进行博客的搭建 4、更改博客样式 5、将博客上传到Gitee 6、更新博客 首先看一下Hexo的博客的效果。 1、下载安装Git Git 是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本…...

【面试实战】认证授权流程及原理分析

认证授权流程及原理分析 1、认证 (Authentication) 和授权 (Authorization)的区别是什么?2、什么是Cookie ? Cookie的作用是什么?如何在服务端使用 Cookie ?3、Cookie 和 Session 有什么区别?如何使用Session进行身份验证?1、认证 (Authentication) 和授权 (Authorizatio…...

TPM命令解析之tpm2_startauthsession

参考网址链接&#xff1a;tpm2-tools/tpm2_startauthsession.1.md at master tpm2-software/tpm2-tools GitHub 命令名称 tpm2_startauthsession 功能 启动一个TPM会话。 命令形式 tpm2_startauthsession [OPTIONS] 描述 启动一个TPM会话。默认是启动一个试验&#xff08…...

第14章 局部波动率模型

这学期会时不时更新一下伊曼纽尔德曼&#xff08;Emanuel Derman&#xff09; 教授与迈克尔B.米勒&#xff08;Michael B. Miller&#xff09;的《The Volatility Smile》这本书&#xff0c;本意是协助导师课程需要&#xff0c;发在这里有意的朋友们可以学习一下&#xff0c;思…...

云原生周刊:开源“赢了”,但它可持续吗?

日前召开的 State of Open 会议上&#xff0c;开源“赢了”&#xff0c;但如果政府和企业不站出来确保生态系统在未来的弹性和可持续性&#xff0c;那么它仍然会失败。 OpenUK 首席执行官 Amanda Brock 在开幕式上表示&#xff0c;数字化和开源在过去 5 到 10 年的进步提升了工…...

读《企业IT架构转型之道》

本书还没读完&#xff0c;暂摘抄一些概念&#xff0c;因为自身做的新系统也在转型&#xff0c;从单体式到一体化一年来遇到很多问题有技术上的&#xff0c;也有团队协作的&#xff0c;过程是痛苦且复杂的&#xff0c;所以在刚翻阅前几十页时候&#xff0c;对于淘宝技术团队转型…...

Qt中的QTcpSocket、QWebSocket和QLocalSocket

同时实现了QTcpSocket、QWebSocket和QLocalSocket的简单通讯deamon&#xff0c;支持自动获取本机ip&#xff0c;多个客户端交互。在这个基础上你可以自己加错误检测、心跳发送、包封装解析和客户端自动重连等功能。 获取本机电脑ip&#xff1a; QString Widget::getIp() {QSt…...

枚举学习贴

1. 概述 1.1 是什么 枚举对应英文(enumeration, 简写 enum)枚举是一组常量的集合。可以这里理解&#xff1a;枚举属于一种特殊的类&#xff0c;里面只包含一组有限的特定的对象 1.2 枚举的二种实现方式 自定义类实现枚举使用 enum 关键字实现枚举 1.3 什么时候用 存在有限…...

【C++】30h速成C++从入门到精通(继承)

继承的概念及定义继承的概念继承&#xff08;inheritance&#xff09;机制是面向对象程序设计使代码可以复用的重要手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序…...

Java多线程还不会的进来吧,为你量身打造

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…...

8 神经网络及Python实现

1 人工神经网络的历史 1.1 生物模型 1943年&#xff0c;心理学家W.S.McCulloch和数理逻辑学家W.Pitts基于神经元的生理特征&#xff0c;建立了单个神经元的数学模型&#xff08;MP模型&#xff09;。 1.2 数学模型 ykφ(∑i1mωkixibk)φ(WkTXb)y_{k}\varphi\left(\sum_{i1…...

使用QIS(Quantum Image Sensor)图像重建总结(1)

最近看了不少使用QIS重建图像的文章&#xff0c;觉得比较完整详细的还是Abhiram Gnanasambandam的博士论文&#xff1a;https://hammer.purdue.edu/articles/thesis/Computer_vision_at_low_light/20057081 1 介绍 讲述了又墨子的小孔成像原理&#xff0c;到交卷相机&#xf…...

【SpringCloud】SpringCloud教程之Nacos实战(二)

目录前言一.Nacos实现配置管理二.Nacos拉取配置三.Nacos配置热更新(自动刷新&#xff0c;不需要重启服务)1.在有Value注入变量所在类添加注解2.新建类用于属性加载和配置热更新四.Nacos多环境配置共享1.多环境共享配置2.配置的加载优先级测试3.配置优先级前言 Nacos实战一&…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...