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用于设置屏幕相关,处于Manifest的子标签中。 使您能够指定应用支持的屏幕尺寸,并为比应用支持的最大屏幕还大的屏幕启用屏幕兼容性模式。请务必始终在应用中使用此元素指定应用支持的屏幕尺寸。 注意:建议不要在屏…...
操作系统基础知识介绍之Mixed CriticalitySystems——混合关键系统
一、发展背景 在嵌入式场景中,虽然Linux已经得到了广泛应用,但并不能覆盖所有需求,例如高实时、高可靠、高安全的场合。这些场合往往是实时操作系统 的用武之地。有些应用场景既需要Linux的管理能力、丰富的生态又需要实时操作系统的高实时、…...
【数据结构初阶】详解链表OJ题
目录一.删除链表中等于给定值的节点二.合并有序链表并返回三.链表的回文结构1.反转单链表2.返回非空链表的中间节点四.输出链表倒数第K个节点五.基于给定值x分割单链表六.返回两个链表的第一个中间节点一.删除链表中等于给定值的节点 我们先来看第一题(题目链接): 因为我们需…...
Java基本数据类型变量自动提升、强制类型转换、String基本类型使用
文章目录基本数据类型变量自动提升特殊情况强制类型转换String基本类型使用基本数据类型变量自动提升 规则: 将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型 。 byte、short、char-->int-->…...
Redis锁与幂等性不得不说的故事
前言: 相信很多小伙伴对缓存锁都不陌生,但是简单的缓存锁想要用好还是需要一些功力。本文总结了笔者多年使用缓存所的一些心得,欢迎交流探讨~ 幂等模型: 幂等场景一般由查重写入两步操作组成,两步操作组成一个最小完…...
Spark 应用调优
Spark 应用调优人数统计优化摇号次数分布优化Shuffle 常规优化数据分区合并加 Cache优化中签率的变化趋势中签率局部洞察优化倍率分析优化表信息 : apply : 申请者 : 事实表lucky : 中签者表 : 维度表两张表的 Schema ( batchNum,carNum ) : ( 摇号批次,…...
synchronized 与 volatile 关键字
目录1.前言1.synchronized 关键字1. 互斥2.保证内存可见性3.可重入2. volatile 关键字1.保证内存可见性2.无法保证原子性3.synchronized 与 volatile 的区别1.前言 synchronized关键字和volatile是大家在Java多线程学习时接触的两个关键字,很多同学可能学习完就忘记…...
【0成本搭建个人博客】——Hexo+Node.js+Gitee Pages
目录 1、下载安装Git 2、下载安装Node.js 3、使用Hexo进行博客的搭建 4、更改博客样式 5、将博客上传到Gitee 6、更新博客 首先看一下Hexo的博客的效果。 1、下载安装Git Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本…...
【面试实战】认证授权流程及原理分析
认证授权流程及原理分析 1、认证 (Authentication) 和授权 (Authorization)的区别是什么?2、什么是Cookie ? Cookie的作用是什么?如何在服务端使用 Cookie ?3、Cookie 和 Session 有什么区别?如何使用Session进行身份验证?1、认证 (Authentication) 和授权 (Authorizatio…...
TPM命令解析之tpm2_startauthsession
参考网址链接:tpm2-tools/tpm2_startauthsession.1.md at master tpm2-software/tpm2-tools GitHub 命令名称 tpm2_startauthsession 功能 启动一个TPM会话。 命令形式 tpm2_startauthsession [OPTIONS] 描述 启动一个TPM会话。默认是启动一个试验(…...
第14章 局部波动率模型
这学期会时不时更新一下伊曼纽尔德曼(Emanuel Derman) 教授与迈克尔B.米勒(Michael B. Miller)的《The Volatility Smile》这本书,本意是协助导师课程需要,发在这里有意的朋友们可以学习一下,思…...
云原生周刊:开源“赢了”,但它可持续吗?
日前召开的 State of Open 会议上,开源“赢了”,但如果政府和企业不站出来确保生态系统在未来的弹性和可持续性,那么它仍然会失败。 OpenUK 首席执行官 Amanda Brock 在开幕式上表示,数字化和开源在过去 5 到 10 年的进步提升了工…...
读《企业IT架构转型之道》
本书还没读完,暂摘抄一些概念,因为自身做的新系统也在转型,从单体式到一体化一年来遇到很多问题有技术上的,也有团队协作的,过程是痛苦且复杂的,所以在刚翻阅前几十页时候,对于淘宝技术团队转型…...
Qt中的QTcpSocket、QWebSocket和QLocalSocket
同时实现了QTcpSocket、QWebSocket和QLocalSocket的简单通讯deamon,支持自动获取本机ip,多个客户端交互。在这个基础上你可以自己加错误检测、心跳发送、包封装解析和客户端自动重连等功能。 获取本机电脑ip: QString Widget::getIp() {QSt…...
枚举学习贴
1. 概述 1.1 是什么 枚举对应英文(enumeration, 简写 enum)枚举是一组常量的集合。可以这里理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象 1.2 枚举的二种实现方式 自定义类实现枚举使用 enum 关键字实现枚举 1.3 什么时候用 存在有限…...
【C++】30h速成C++从入门到精通(继承)
继承的概念及定义继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的重要手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序…...
Java多线程还不会的进来吧,为你量身打造
💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…...
8 神经网络及Python实现
1 人工神经网络的历史 1.1 生物模型 1943年,心理学家W.S.McCulloch和数理逻辑学家W.Pitts基于神经元的生理特征,建立了单个神经元的数学模型(MP模型)。 1.2 数学模型 ykφ(∑i1mωkixibk)φ(WkTXb)y_{k}\varphi\left(\sum_{i1…...
使用QIS(Quantum Image Sensor)图像重建总结(1)
最近看了不少使用QIS重建图像的文章,觉得比较完整详细的还是Abhiram Gnanasambandam的博士论文:https://hammer.purdue.edu/articles/thesis/Computer_vision_at_low_light/20057081 1 介绍 讲述了又墨子的小孔成像原理,到交卷相机…...
【SpringCloud】SpringCloud教程之Nacos实战(二)
目录前言一.Nacos实现配置管理二.Nacos拉取配置三.Nacos配置热更新(自动刷新,不需要重启服务)1.在有Value注入变量所在类添加注解2.新建类用于属性加载和配置热更新四.Nacos多环境配置共享1.多环境共享配置2.配置的加载优先级测试3.配置优先级前言 Nacos实战一&…...
AI Agent技能生成器:从零创建精准高效的SKILL.md文件
1. 项目概述:一个为AI Agent生成“技能说明书”的元技能如果你和我一样,经常在Claude Code、Cursor或者Codex这类AI编程助手工具里折腾,想让它帮你处理一些特定的、重复性的开发任务,那你肯定对“技能”(Skill…...
Slurm集群GPU资源管理实战:如何用`--gres=gpu`参数正确调度你的GTX1080Ti?
Slurm集群GPU资源管理实战:如何用--gresgpu参数正确调度你的GTX1080Ti? 在AI研究与数据科学领域,GPU资源的高效利用直接关系到模型训练与实验的成败。许多团队虽然配备了GTX1080Ti等高性能显卡,却常因Slurm集群调度不当导致资源闲…...
容器技术从入门到精通:Docker核心概念、Dockerfile与生产实践全解析
1. 项目概述:从零到一构建容器化认知体系最近在技术社区里,经常看到有朋友在讨论stephrobert/containers-training这个仓库。乍一看,这像是一个个人或团队维护的关于容器技术的培训材料。对于刚接触 Docker 和容器生态的开发者、运维工程师&a…...
为AI编码助手集成aislop-skill:实时代码质量检测与修复
1. 项目概述:为AI编码助手装上“质检员”如果你和我一样,日常重度依赖Cursor、Windsurf这类AI驱动的IDE,或者频繁使用Claude Code、Gemini CLI等代码生成工具,那你一定遇到过这样的场景:AI助手生成的代码,功…...
DRAM计算内存的电源传输网络优化策略
1. DRAM计算内存中的电源传输网络挑战与优化在数据密集型应用爆炸式增长的今天,传统冯诺依曼架构面临严峻的"内存墙"挑战。计算内存(Compute-in-Memory, CIM)技术通过在内存内部执行计算任务,从根本上改变了数据处理范式…...
i.MX 6UL/6ULL开发环境配置与驱动开发实战
1. i.MX 6UL/6ULL开发环境配置实战1.1 虚拟机环境搭建要点对于Windows平台下的i.MX开发,VirtualBox虚拟机是最经济实惠的选择。根据实际项目经验,建议配置如下:内存至少4GB(复杂项目推荐8GB)硬盘空间预留100GB…...
【LeetCode 手撕算法】(二分查找)搜索插入位置、搜索二维矩阵、查找数组相同的所有位置、搜索旋转排序数组、旋转升序数组的最小值
复杂度为O(log n)且有序用二分查找35-搜索插入位置思路:二分查找,左右指针 求中间值注意:while的查询条件是>class Solution {public int searchInsert(int[] nums, int target) {int left0;int rightnums.length-1;while(left<right){…...
windows系统安装wsl安装opencode教程
使用 AI 助手(OpenCode)在 WSL2 中高效安全工作教程 背景 在 AI 极大发展的现在,AI 可以帮助我们完成很多工作。那么怎么让 AI 帮我们高效、安全地工作呢?以下是教程。 同时,大模型在 Windows 里面直接执行脚本时错…...
【Midjourney水墨风创作终极指南】:20年AI视觉专家亲授7大不可外传的Ink Wash参数配方与避坑清单
更多请点击: https://intelliparadigm.com 第一章:水墨风AI创作的认知革命与历史语境 水墨艺术承载着东方哲学中“虚实相生”“气韵生动”的深层认知范式,而当生成式AI介入水墨风格建模时,其本质并非简单纹理迁移,而是…...
从业者必看:医药资质认证服务核心知识梳理
如果你是初创医疗器械贸易商创始人、医美诊所创业者、连锁药店负责人或是医药电商运营人员,正面临缺证无法入驻平台、自行办理流程繁琐反复被驳回、赶大促节点急需下证等问题,想要了解医药资质认证服务相关内容,这篇科普内容会为你梳理清楚全…...
