关于屏幕适配的学习(support-screens)

Android supports-screens 屏幕适配 只有在万不得已时,才可以针对无法充分利用较大屏幕尺寸的应用使用屏幕兼容模式。建议不要在此模式下运行应用,因为它会导致用户体验不佳。屏幕兼容性模式有两种不同的版本,具体取决于运行应用的设备版本。在 Android 版本 1.6 至 3.1 中,系统会在“邮票式”窗口中运行您的应用。它会模拟 320dp x 480dp 屏幕,并用黑色边框填充屏幕的剩余区域。在 Android 3.2 及更高版本上,系统会像在 320dp x 480dp 屏幕上一样绘制布局,然后将其放大以填充屏幕。 阅读详情

<supports-screens>

语法:

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

包含在:

<mainfest>

描述:

让您指定您的应用支持的屏幕的大小并且可以通过屏幕兼容模式来支持比您应用所支持更大的屏幕。所以这对于您需要在您的应用里面使用这个元素来制定您的应用所支持的屏幕大小是很重要的。

一个应用如果可以合适调整以适应全屏幕的前提下是可以“支持”一个具体的屏幕大小的。系统所应用的正常调整调整对于大多数的应用都适用,所以您也不需要做多余的工作来使您的应用支持比手机设备更大的屏幕。但是,通过提供可选择的布局资源来使您的应用能够对不同屏幕大小的界面进行优化还是很重要。举例来说,您也许需要在平板和手机设备上对activity的布局进行修改。

然而,如果您的应用在调整适应不同屏幕大小的时候出现问题,您可以通过使用<supports-screens>元素的属性来决定您的应用是被发布到小屏幕上面还是可以通过系统的屏幕兼容模式来使应用的界面能够通过缩放(“放大”)来适应更大的屏幕大小。当您没有为大一点的屏幕大小进行设计,并且一般的调整没有达到期望的结果时,屏幕兼容模式将先模拟一个一般中等的屏幕,使您的设计界面先缩小,然后通过放大来填满整个屏幕。但是这样会导致像素变化,您的界面将会变得模糊,所以您最好为您的界面能适应更大的屏幕做好优化工作。

注意:Android 3.2为介绍了一些新的属性:android.requiresSmallestWidthDp,android:compatibleWidthLimitDp和android:largestWidthLimitDp。如果您开发Android 3.2或者更高版本的应用,你最好用这些属性代替基于一般屏幕大小的属性来声明您所支持的屏幕大小。

想要了解更多的关于您的应用如何避免使用屏幕兼容模式就能正确的支持不同屏幕大小的信息,请参见支持多种屏幕。

属性:

android:resizeable

决定您的应用是否需要为不同的屏幕大小而进行调整。默认的情况下是true。如果设置为false,系统将会在大屏幕中为您的应用使用 屏幕兼容模式进行调整。
这个方法已经过时了。这是用来介绍帮助您的应用在首次介绍支持多屏幕从Android 1.5到Android 1.6的过度。你不需要使用这个属性了。

android:smallScreens

决定您的应用是否支持小屏幕形式因素。一个小屏幕就是指比“正常”(传统的HVGA)长宽比小一点的屏幕。一个不支持小屏幕的应用同样对比从外部服务(例如Google商店)来的小屏幕设备也不适用,因为有很少的平台可以让这样一个应用在小屏幕上工作,所以默认为“ true”

android:normalScreens

决定您的应用是否支持“正常”屏幕形式因素。一般来说,这是一个为HVGA密度的屏幕,但是WQVGA低密度和WVGA高密度也可以被当成为普通的。这个属性被默认为是“true”。

android:largeScreens

决定您的应用是否是支持较大一点的屏幕形式因素。一个大屏幕就是指比“正常”(传统的HVGA)长宽比大一点的屏幕,所以需要一些在应用的一部分上面好好的使用它,尽管也可以依靠系统的调整填满整个屏幕。
该默认值在不同的版本中会不一样,所以您最好在需要的时候进行明确的声明。需要注意的是设置该值为“false”就表示自动使用系统 屏幕兼容模式。

android:xlargeScreens

决定您的应用是否需要超大屏幕形式因素。一个超大屏幕是指比“大”屏幕还要在大一点的屏幕,就像平板(或者更大的),所以需要一些在应用的一部分上面好好的使用它,尽管也可以依靠系统的调整填满整个屏幕。
该默认值在不同的版本中会不一样,所以您最好在需要的时候进行明确的声明。需要注意的是设置该值为“false”就表示自动使用系统 屏幕兼容模式。
这个属性出现在API level 9。

android:anyDensity

决定您的应用是否包含能够适用于任何屏幕密度的资源。
对于支持Android 1.6(API level 4)或者更高的应用来说,默认值都为“true”并且 您不可以设置它为“false”除非您可以绝对肯定在您的应用中这是完全有必要的。唯一有必要阻止它的话就是您需要您的应用直接操纵图片(更多的信息都在 支持多种屏幕的文档中)。

android:requiresSmallestWidthDp

指定最小的smallestWidth的值。这个smallestWidth是指屏幕空间(以 dip为单位)能偶适用于您的应用界面最短的维度-----也就是最短的可用屏幕的两个维度。所以,为了一个可以和您的应用相兼容的设备,该设备的smallestWidth必须等于或者好于这个值。(通常来说,您提供的这个您布局所支持的“最小宽度”是不管屏幕当前的方向的。)
举例来说,一个典型的手机屏幕smallestWidth的值为320dp,一个7英寸的平板smallestWidth的值为600dp,而一个10英寸的平板smallestWidth的值为720dp。这些值都是一般的smallestWidth的值,因为它们是屏幕可用空间的最短维度。
关于您具体需要选择什么样的大小,那就要把屏幕的装饰以及系统的UI界面都考虑进去进行比较了。例如:如果设备上需要显示一些持续不断地UI元素,系统声明设备smallestWidth值就要比实际的屏幕大小小一点了,因为那些UI元素的pix对您的UI界面不适用。因此,无论当前屏幕的方向,您使用的值必须是您的布局中所要求的最小的宽度。
如果您的应用可以为更小的屏幕大小(下降到小的规模或者最小宽度是320dp)进行正确调整,您就不需要使用这个属性了。否则,您应该为了您的应用,根据 最小屏幕宽度介绍( sw<N>dp) 为您的应用设定合适的最小值。

注意:Android系统没有太多内容在这个属性,所以它不会再您的应用运行时有什么影响的。相反,它可以用来将您的应用在那些服务器上例如Google商店过滤出来。但是,Google商店目前还不支持这个属性进行筛选(在Android 3.2),所以您的应用不支持小屏幕的话最好继续使用其它的大小属性。

这个属性出现在API level 13。

android:compatibleWidthLimitDp

这个属性允许您在设计应用时指定最大的“最小屏幕宽度”使 屏幕兼容模式作为用户选择的一种功能。如果一个设备可用屏幕最小的一边比您设定的值要小的话,用户仍然可以安装您的应用,但是却被要求在屏幕兼容性能下运行。默认的情况之下,屏幕兼容模式是关着的,并且您的布局像平常一样调整来适应屏幕,但是在系统栏中有一个按钮可以让用户决定屏幕兼容模式是否打开。
如果您的应用兼容所有的屏幕大小,并且您的布局能够正确调整,那么你就不需要使用这个属性。

注意:目前,屏幕兼容模式只有在宽度为320dp的手机下能够模拟成功,所以您的android:compatibleWidthLimitDp值大于320的话,屏幕兼容模式就不能适用。

这个属性出现在API level 13。

android:largestWidthLimitDp

这个属性允许您在设计应用时指定最大的“最小屏幕宽度”并且强制使用 屏幕兼容模式。如果一个设备可用屏幕最小的一边比您设定的值要小的话,该应用在以屏幕兼容模式下运行时用户没有办法来停止它。
如果您的应用兼容所有的屏幕大小,并且您的布局能够正确调整,那么你就不需要使用这个属性。否则,您必须首先考虑使用 android:compatibleWidthLimitDp这个属性。只有当您的应用程序功能在为更大屏幕调整时被破坏并且屏幕兼容模式是用户操作您的应用唯一的方式时,您可以使用 android:largestWidthLimitDp这个属性。

注意:目前,屏幕兼容模式只有在宽度为320dp的手机下能够模拟成功,所以您的android:largestWidthLimitDp值大于320的话,屏幕兼容模式就不能适用。

这个属性出现在API level 13。

介绍:API Level 4

参考:

编程语言“鄙视链”:为何Python会处于这样的位置? 本文将深入剖析 Python 在编程语言 “鄙视链” 中地位的成因,从语言特性、应用场景、社区文化等多个维度展开探讨,力求为读者呈现一个全面且深入的分析,帮助大家理解这一现象背后的复杂逻辑。 阅读详情

相关推荐

猿创征文|【听听iecne怎么说】C语言 vs Cpp vs C# 有何区别?_c#和cpp

C语言适用于底层应用开发,可以对硬件进行强操控。C++适用于更可控的底层应用不喜欢Java去学C#三连->动力给个三连吧!

2401_84182392的博客 558

AndroidManifest.xml文件详解(supports-screens)

语法(SYNTAX): &lt;supports-screensandroid:resizeable=["true"|"false"]android:smallScreens=["true" | "false"]android:normalScreens=["true" | "false"]android:largeScreens=["true"

编程资料大全 415

Ollama运行DeepSeek大模型调优指南:GPU与CPU协同实现性能最大化

Ollama运行DeepSeek大模型调优指南

qq_32358423的博客 3994

supports-screens 是什么东东

看我们想项目中有这个东西,查了下,以前写的时候确实没用过的。 在android开发的过程中,不同分辨率的兼容问题是经常遇到的. 如下, 在PAD应用开发的过程中,在PC上模拟器上运行的只是小分辨率的程序, 而对于大小如同1027*768的,可能支持上不是很完美. 除了把图片,布局文件放入不同的文夹中,如(drawable-mdpi, drawable-ldpi, layout-l

学习记录 3365

DSP TMS320F280049之CCS工程的建立(库函数版)

TMS320F280049 DSP是TI最新出的一款C2000系列的DSP,主频为100MHZ,功能较为强大,具有较多的片上模拟外设。这一节主要讲述如何新建F280049的CCS工程。 Step1.下载文件: 下载C2000Ware软件并安装。下载地址如下: http://www.ti.com.cn/tool/cn/C2000WARE?keyMatch=C2000Ware%2...

fanxianyan1993的博客 1万+

光模块组成

时钟恢复电路(Clock Data Recovery,简称CDR)是光模块中的关键组成部分,CDR的作用主要是从接收到的信号中提取出数据序列,并且恢复出与数据序列相对应的时钟时序信号,从而还原接收到的具体信息。因为光信号传输至一定距离的时候,通常是长距离传输,其波形会出现一定程度的失真,接收端接收到的信号是一个个长短不一的脉冲信号,这个时候在接收端,我们就无法得到我们需要的数据。所以,这个时候就需要有信号的再生,信号的再生功能为再放大、再整形和再定时,其中的再定时指的就是CDR时钟数据恢复。

han_better的博客 5721

Android官方文档—APP清单(supports-screens)

&lt;supports-screens&gt; 语法: &lt;supports-screens android:resizeable=["true"| "false"] android:smallScreens=["true" | "false"] android:normalScreens=["true&quot

逝水流年轻染尘的博客 784

DIY等离子环:从Class-E电路到七彩辉光,手把手教你打造炫酷科学玩具

本文手把手教你DIY一个炫酷的等离子环科学玩具。从解析等离子体辉光放电原理入手,详细介绍了核心的Class-E自激振荡电路设计、关键元件选型与参数计算,并提供了从物料准备、电路搭建、腔体密封到上电调试的全流程指南。通过调制电路或填充不同气体,还能实现七彩变换与交互效果,是学习高频电路与电磁场知识的绝佳实践项目。

weixin_29305337的博客 633

<supports-screens> 让你的layout适应屏幕的大小包括 平板

大家都知道,Android 2.3 SDK发布的时候,在SDK中增加了第三方add-ons,其中就包括了针对平板电脑的Galaxy Tab Addon。 当我们启动一个新的平板电脑模拟器的时候,首先我们需要设置“Scale display to real size"选项,这将让平板电脑的屏幕大小与我们电脑屏幕的大小匹配。以我的电脑为例,我的屏幕大小是1440x900px。

z104207的专栏 2万+

unity中VideoPlayer播放视频,使用Shader除去黑底且无黑边

1. 创建一个Shader 和 一个 材质球;Shader中复制如下代码:(此Shader代码为“ChromaKeyKit”插件中的ChromaKey_Alpa_Genera代码,但因只需要除去视频黑底而挂一个插件有点不合适) // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "ChromaKeyKit/ChromaKey/ChromaKey_Alpha_General"

weixin_42065078的博客 1745

【人工智能的数学基础】最优传输(Optimal Transport)问题与Wasserstein距离

代表两堆石子,则问题等价于如何移动一堆石子,通过最小的累积移动距离把它堆成另外一堆石子。的不同位置分配的值。为离散型概率分布,则该优化问题可以表示为矩阵形式。表示寻找总运输成本最小的方案。放大后的上确界不会小于原来的上确界,因此不妨取。具有相同的概率分布。是概率分布,因此积分可以写作采样形式。描述了一种可行的运输方案,表示应该从位置。则最优传输问题的目标函数可以用列向量。对于一个线性规划问题,总可以写出其。的所有可能联合分布的集合,下确界。其中矩阵的每一行代表概率分布。表示寻找使得目标函数最大的。

AI天才研究院 6328

猫头虎博主揭秘:令人叹为观止的编程语言与代码技巧 ‍

本文将深入探讨几种令人叹为观止的编程语言:Go, Python, Java, 和 C++。每种语言都有其独特的魔力和应用场景。我们还将分享一些惊人的代码技巧,以及这些技巧在实际开发中的应用。无论你是编程新手还是经验丰富的开发者,这篇文章都会带给你新的启发和惊喜。关键词包括:Go语言, Python, Java, C++, 编程技巧, 实战案例。在本文中,我们深入探讨了四种流行的编程语言(Go, Python, Java, 和 C++)以及它们在实际应用中的独特优势和案例。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1254

mbedtls | 01 - 移植mbedtls库到STM32的两种方法

一、mbedtls 开源库 1. mbedtls是什么 Mbed TLS是一个开源、可移植、易于使用、代码可读性高的SSL库。可实现加密原语,X.509证书操作以及SSL / TLS和 DTLS 协议,它的代码占用空间小,非常适合用于嵌入式系统。 mbedtls遵循 Apache 2.0 开源许可协议,目前由 TrustedFirmware 维护(Linaro主持的一个治理开放社区项目),在Github上已收获 2.6k star,目前Github上发布的最新版本为 2.24.0 版本,开源仓库地址为:

Mculover666的博客(嵌入式) 1万+

简述不同编程语言的区别

快速了解编程语言的区别

zlxzel的博客 1113

026:vue+threeJS 设置地面铺砖的效果

BoxGeometry 是 Three.js 中用于创建立方体或长方体的几何体类。它允许你指定立方体的宽度、高度、深度以及这三个方向上的分段数,从而控制立方体的细分程度。width: 立方体的宽度(沿 x 轴方向)。height: 立方体的高度(沿 y 轴方向)。depth: 立方体的深度(沿 z 轴方向)。widthSegments: 可选参数,指定立方体在 x 轴方向上的分段数,默认值为 1。heightSegments: 可选参数,指定立方体在 y 轴方向上的分段数,默认值为 1。

大剑师兰特的GIS世界 645

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【综合】六大编程语言大比拼

在本期中,我们会详细讲解六大编程语言C、C++、Python、Java、PHP、JS的区别,以及完成以下两个题目在当今的编程世界中,有许多不同的编程语言可供选择。每种语言都有其独特的特点和适用场景。本文将对 C、C++、Python、Java、PHP 和 JavaScript 这六种常见的编程语言进行比较,帮助读者更好地了解它们的优缺点和适用范围。简介C 语言是一种古老而强大的编程语言,它是许多其他编程语言的基础。

weixin_68261272的博客 1258

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

不同编程语言的魅力

Visual Basic是一种由微软公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。它源自于BASIC编程语言。C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。一般,“Perl”,有大写的P,是指语言本身,而“perl”,小写的p,是指程序运行的解释器。最重要的是,C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。

关注我!带你一路 "狂飙" 到底! 1287

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

我靠,编程语言编年史!

点击上方“朱小厮的博客”,选择“设为星标” 回复”666“获取《Java通关宝典》 来源:http://dwz.win/kpF 正文 代码是一门语言,这门语言搭建了人与计算机沟通的桥梁。通过编写代码,人类可以“命令”计算机开发网页、开发软件、搭建游戏... ... 这门语言并不是上帝的发明,它是前辈们发挥聪明才智创造出来的,前辈们的创造过程虽然充满了有趣...

朱小厮的博客 922

C++ 即将超越 Java,TIOBE 6 月编程语言排行榜发布!_c++ 排名

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。 既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来,全套

2401_84412011的博客 716

不同编程语言的程序可不可以通过接口相互调用?一些库为啥可以提供不同语言的接口?_跨语言调用api

为了实现这种融合,必须在所有设备的驱动中设计面向操作系统内核的接口,这样的接口由操作系统规定,对一类设备而言结构一致,独立于具体的设备。融合到系统内核里的设备驱动使用的编程语言是和编写系统所用的语言一致的,例如Linux系统内核是用C语言和汇编语言写的,所以其设备驱动也是用C语言和汇编语言写的。首先,不同编程语言对应不同的编译器,而不同编程语言的编译器对函数的解释不同,会翻译成不同的符号表。函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。

2401_84265830的博客 966

不同编程语言的程序可不可以通过接口相互调用?一些库为啥可以提供不同语言的接口?_跨语言调用api(1)

为了实现这种融合,必须在所有设备的驱动中设计面向操作系统内核的接口,这样的接口由操作系统规定,对一类设备而言结构一致,独立于具体的设备。融合到系统内核里的设备驱动使用的编程语言是和编写系统所用的语言一致的,例如Linux系统内核是用C语言和汇编语言写的,所以其设备驱动也是用C语言和汇编语言写的。首先,不同编程语言对应不同的编译器,而不同编程语言的编译器对函数的解释不同,会翻译成不同的符号表。函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。

2401_84264583的博客 1097

各种编程语言介绍,应用,性能等

主流编程语言优缺点 前言 本文的目的并非是想挑起语言之争,而是希望通过客观地分析每一种主流语言的能力,辨明其长短,让程序员能够扬长避短,有效地使用各种语言。让各种语言能够各安其位,为你更好的服务。 程序员应当成为语言的主人,而不是语言的奴隶。 正文 这里,我将比较一下几种主流编程语言:C,C++,Java,.NET,Ruby,JavaScri...

weixin_30706691的博客 1206

谷歌宣布正式开源编程语言Carbon!挑战C++!

点击关注公众号:互联网架构师,后台回复2T获取2TB学习资源!上一篇:Alibaba开源内网高并发编程手册.pdf最近,在多伦多举办的 CppNorth 大会上,谷歌工程师 Chandler Carruth 宣布,正式开源谷歌内部打造的编程语言:Carbon,并称 Carbon 是 C++ 的继任者(目前处于实验性阶段)。Chandler 列举了当今流行编程语言演进的一...

emprere的博客 1324

语言C++之简单C++语言介绍

这些只是本蒟蒻的一些见解,还望各位神犇积极评论提出宝贵意见,万分感谢!!!!!!!!!! 第一篇啊,给点关注和赞吧,以后会写更多的!!!!!!!!!!!!!!!!!!!!!!!!! 首先让我们先了解一下C++语言      信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力,选手首先应针对竞赛题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后编写出...

C++ 3万+
上一篇: Android应用请求获取Root权限
下一篇: Android 内存浅析【一】【管理、机制、分析】
祝福
博客等级 码龄15年 263粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值