1、屏幕相关概念

Android屏幕刷新机制—VSync、Choreographer-全面理解!,安卓ndk开发书籍 上面讲到,Google在Android 4.1系统中对Android Display系统进行了优化:在收到VSync pulse后,将马上开始下一帧的渲染。即一旦收到VSync通知,CPU和GPU就立刻开始计算然后把数据写入buffer。本节就来讲 “drawing with VSync” 的实现——。Choreographer,意为 舞蹈编导、编舞者。在这里就是指 对CPU/GPU绘制的指导—— 收到VSync信号 才开始绘制,保证绘制拥有完整的16.6ms,避免绘制的随机性。 阅读详情
1、屏幕相关概念 
1.1分辨率 
是指屏幕上有横竖各有多少个像素 
1.2屏幕尺寸 
指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 
android将屏幕大小分为四个级别(small,normal,large,and extra large)。 
1.3屏幕密度 
每英寸像素数 
手机可以有相同的分辨率,但屏幕尺寸可以不相同, 
Diagonal pixel表示对角线的像素值(=),DPI=933/3.7=252 
android将实际的屏幕密度分为四个通用尺寸(low,medium,high,and extra high) 
一般情况下的普通屏幕:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi 
对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚 
1.4密度无关的像素(Density-independent pixel——dip) 
dip是一种虚拟的像素单位 
dip和具体像素值的对应公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160) 
当你定义应用的布局的UI时应该使用dp单位,确保UI在不同的屏幕上正确显示。 

手机屏幕分类和像素密度的对应关系如表1所示 

手机尺寸分布情况(http://developer.android.com/resources/dashboard/screens.html)如图所示, 

目前主要是以分辨率为800*480和854*480的手机用户居多 
从以上的屏幕尺寸分布情况上看,其实手机只要考虑3-4.5寸之间密度为1和1.5的手机 

2、android多屏幕支持机制 
Android的支持多屏幕机制即用为当前设备屏幕提供一种合适的方式来共同管理并解析应用资源。 
Android平台中支持一系列你所提供的指定大小(size-specific),指定密度(density-specific)的合适资源。 
指定大小(size-specific)的合适资源是指small, normal, large, and xlarge。 
指定密度(density-specific)的合适资源,是指ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high). 
Android有个自动匹配机制去选择对应的布局和图片资源 
1)界面布局方面 
   根据物理尺寸的大小准备5套布局: 
    layout(放一些通用布局xml文件,比如界面顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar), 
    layout-small(屏幕尺寸小于3英寸左右的布局),  
    layout-normal(屏幕尺寸小于4.5英寸左右), 
    layout-large(4英寸-7英寸之间), 
    layout-xlarge(7-10英寸之间) 
2)图片资源方面 
  需要根据dpi值准备5套图片资源: 
    drawable:主要放置xml配置文件或者对分辨率要求较低的图片 
    drawalbe-ldpi:低分辨率的图片,如QVGA (240x320) 
    drawable-mdpi:中等分辨率的图片,如HVGA (320x480) 
    drawable-hdpi:高分辨率的图片,如WVGA (480x800),FWVGA (480x854) 
    drawable-xhdpi:至少960dp x 720dp 
Android有个自动匹配机制去选择对应的布局和图片资源。 
  系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。 
  在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。 

3、AndroidManifest.xml 配置 
android从1.6和更高,Google为了方便开发者对于各种分辨率机型的移植而增加了自动适配的功能 
          <supports-screens 
           android:largeScreens="true"  
            android:normalScreens="true" 
            android:smallScreens="true"  
            android:anyDensity="true"/> 
3.1是否支持多种不同密度的屏幕 
android:anyDensity=["true" | "false"] 
如果android:anyDensity="true" 
指应用程序支持不同密度,会根据屏幕的分辨率自动去匹配。 
如果android:anyDensity="false" 
应用程序支持不同密度,系统自动缩放图片尺寸和这个图片的坐标。具体解释一下系统是如何自动缩放资源的。 
例如我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240×320像素的手机, 
如果设置android:anyDensity="false",Android系统会将240 x 320(低密度)转换为 320×480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源。 
3.2是否支持大屏幕 
android:largeScreens=["true" | "false"] 
如果在声明不支持的大屏幕,而这个屏幕尺寸是larger的话,系统使用尺寸为("normal")和密度为("medium)显示, 
不过会出现一层黑色的背景。 
3.3是否支持小屏幕 
android:smallScreens=["true" | "false"] 
如果在声明不支持的小屏幕,而当前屏幕尺寸是smaller的话,系统也使用尺寸为("normal")和密度为("medium)显示 
如果应用程序能在小屏幕上正确缩放(最低是small尺寸或最小宽度320dp),那就不需要用到本属性。否则,就应该为最小屏幕宽度标识符设置本属性 
来匹配应用程序所需的最小尺寸。 


4、Android提供3种方式处理屏幕自适应 
4.1预缩放的资源(基于尺寸和密度去寻找图片) 
1)如果找到相应的尺寸和密度,则利用这些图片进行无缩放显示。 
2)如果没法找到相应的尺寸,而找到密度,则认为该图片尺寸为 "medium",利用缩放显示这个图片。 
3)如果都无法匹配,则使用默认图片进行缩放显示。默认图片默认标配 "medium" (160)。 
4.2自动缩放的像素尺寸和坐标(密度兼容) 
1)如果应用程序不支持不同密度android:anyDensity="false",系统自动缩放图片尺寸和这个图片的坐标。 
2)对于预缩放的资源,当android:anyDensity="false",也不生效。 
3)android:anyDensity="false",只对密度兼容起作用,尺寸兼容没效果 
4.3兼容更大的屏幕和尺寸(尺寸兼容) 
1)对于你在声明不支持的大屏幕,而这个屏幕尺寸是normal的话,系统使用尺寸为    ("normal")和密度为("medium)显示。 
2.)对于你在声明不支持的大屏幕,而这个屏幕尺寸是larger的话,系统同样使用尺寸为("normal")和密度为("medium)显示, 
不过会出现一层黑色的背景。 

5、Android系统自动适配技巧 
Android系统采用下面两种方法来实现应用的自动适配: 
1)布局文件中定义长度的时候,最好使用wrap_content,fill_parent, 或者dp 进行描述,这样可以保证在屏幕上面展示的时候有合适的大小 
2)为不同屏幕密度的手机,提供不同的位图资源,可以使得界面清晰无缩放。 
对应bitmap 资源来说,自动的缩放有时会造成放大缩小后的图像变得模糊不清,这是就需要应用为不同屏幕密度配置提供不同的资源:为高密度的屏幕提供高清晰度的图像等。 
3)不要使用AbsoluteLayout 
4)像素单位都使用DIP,文本单位使用SP 

6、在代码中获取屏幕像素、屏幕密度 
DisplayMetrics metric = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metric); 
int width = metric.widthPixels;  // 屏幕宽度(像素) 
int height = metric.heightPixels;  // 屏幕高度(像素) 
float density = metric.density;  // 屏幕密度(0.75 / 1.0 / 1.5) 
int densityDpi = metric.densityDpi;  // 屏幕密度DPI(120 / 160 / 240) 

7、 一般多分辨率处理方法及其缺点 
7.1 图片缩放 
基于当前屏幕的精度,平台自动加载任何未经缩放的限定尺寸和精度的图片。如果图片不匹配,平台会加载默认资源并且在放大或者缩小之后可以满足当前界面的显示要求。例如,当前为高精度屏幕,平台会加载高精度资源(如HelloAndroid中drawable-hdpi 中的位图资源),如果没有,平台会将中精度资源缩放至高精度,导致图片显示不清晰。 
7.2 自动定义像素尺寸和位置 
如果程序不支持多种精度屏幕,平台会自动定义像素绝对位置和尺寸值等,这样就能保证元素能和精度160 的屏幕上一样能显示出同样尺寸的效果。例如,要让WVGA 高精度屏幕和传统的HVGA 屏幕一样显示同样尺寸的图片,当程序不支持时,系统会对程序慌称屏幕分辨率为320×480,在(10,10)到(100,100)的区域内绘制图形完成之后,系统会将图形放大到(15,15)到(150,150)的屏幕显示区域。 
7.3 兼容更大尺寸的屏幕 
当前屏幕超过程序所支持屏幕的上限时,定义supportsscreens元素,这样超出显示的基准线时,平台在此显示黑色的背景图。例如,WVGA 中精度屏幕上,如程序不支持这样的大屏幕,系统会谎称是一个320×480 的,多余的显示区域会被填充成黑色。 
7.4 采用OpenGL 动态绘制图片 
Android 底层提供了OpenGL 的接口和方法,可以动态绘制图片,但是这种方式对不熟悉计算机图形学的开发者来讲是一个很大的挑战。一般开发游戏,采用OpenGL 方式。 
7.5 多个apk 文件 
Symbian 和传统的J2ME 就是采用这种方式,为一款应用提供多个分辨率版本,用户根据自己的需求下载安装相应的可执行文件。针对每一种屏幕单独开发应用程序不失为一种好方法,但是目前Google Market 对一个应用程序多个分辨率版本的支持还不完善,开发者还是需要尽可能使用一个apk 文件适应多个分辨率。 

程序自动化填写网页表单数据 如何让程序自动化填写网页表单数据,特别是涉及到批量数据情况时,可以减少人力。下面是涉及到的一些场景,都可以通过相关自动化程序实现。 阅读详情

相关推荐

阿里云大模型 ACP 认证教材内容突变?这些改动藏着通关密码,不看亏大!

【摘要】核心章节大换血,安全合规融入实战场景,大模型微调用数学深度解析,部署章节带来阿里云产品对比实战攻略,甚至整章内容被替换成藏满学习彩蛋的行业趋势指南。这些改动不仅重塑考试重点,更暗藏官方命题风向——安全合规考场景方案,微调原理考几何解析,部署设计考分析框架。无论你是数学小白还是部署新手,这篇攻略都将带你吃透变动逻辑,附赠急救包和考点清单,帮你抓住这些“隐形加分项”,速来解锁通关秘籍!

davidkorhenn的博客 1755

android屏幕适配的那些事~

1、屏幕相关概念 1.1分辨率 是指屏幕上有横竖各有多少个像素 1.2屏幕尺寸 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 android将屏幕大小分为四个级别(small,normal,large,and extra large)。 1.3屏幕密度 每英寸像素数 手机可以有相同的分辨率,但屏幕尺寸可以不相同, Diagonal pixel

xingqisan的专栏 1617

antiSMASH安装与使用

antiSMASH本地安装 简要: antiSMASH的本地安装需要安装很多的依赖包,本文章使用conda辅助安装 参考: 官方:https://docs.antismash.secondarymetabolites.org/install/ 文章:http://blog.sciencenet.cn/blog-3416913-1240614.html 依赖包下载 conda install -y diamond=0.8.36 conda install -y fasttree=2.1.9 conda ins

Curry_chenhu的博客 7224

android适配原理,安卓屏幕适配原理简单理解

在产品实现中,保证界面展示时适配各种分辨率各种尺寸是非常重要的。我们知道安卓屏幕大小分辨率有不同的规格,那开发者是如何在UI提供一套图片的情况下做到适配,背后的理论依据是什么呢?首先先了解以下概念:1.分辨率。分辨率是手机屏幕像素点数,单位px。常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕宽有720个像素,高有1280个像素。2.屏幕大小。屏幕大...

weixin_39604983的博客 595

银河麒麟V10系统grub崩溃急救指南:从光盘救援到完整恢复(附常见错误排查)

本文详细介绍了银河麒麟V10系统grub崩溃的急救方法,从使用安装光盘进入救援环境到完整恢复系统的全流程。针对不同损坏程度(轻度、中度、严重)提供了分级恢复策略,包括grub2-install和grub2-mkconfig等关键命令的使用,并附有常见错误排查表,帮助用户快速解决引导问题。

weixin_30955617的博客 483

STM32 FMC驱动AD7606实战:从硬件连接到时序调试全流程解析

本文详细解析了STM32 FMC驱动AD7606的全流程,包括硬件连接、FMC接口配置、驱动程序设计和时序调试。通过实战案例,展示了如何利用STM32的FMC总线实现与AD7606的高效数据传输,特别强调了电源设计、信号连接和PCB布局等关键要点,为嵌入式数据采集系统开发提供了实用指导。

aa123的博客 1004

Android 如何通过一个设备开发多种分辨率屏幕UI

获取当前屏幕密度:adb shell wm density获取当前分辨率:adb shell wm sizeadb shell wm size reset adb shell wm density resetadb shell wm size 3082x934adb shell wm density 160 屏幕2adb shell wm size 3950x1320adb shell wm density 280 屏幕3adb shell wm size 2000x974adb shell wm dens

chengzhenjia的博客 697

RagFlow 文档解析

RAGFlow 的设计哲学是“高质量输入,高质量输出”,它通过提供可解释性和可控性的生成结果,让用户能够信任并依赖于系统提供的答案。

weixin_43008312的博客 3999

android 常见的解决(mdpi、hdpi 、xhdpi、xxhdpi )屏幕调整

查询到执行的system service后,就能够在dumpsys后面加上service的名字,查看指定的service信息。 adb shell dumpsys activity adb shell dumpsys cpuinfo adb shell dumpsys battery adb shell dumpsys window(最后部分能够看到分辨率的...

weixin_33957648的博客 268

Win11移动热点连接故障排查:从IP配置失败到网络共享的全面解决指南

本文提供了Win11移动热点连接故障的全面排查指南,重点解决手机连接时卡在“获取IP地址”或提示“IP配置失败”的问题。文章从基础检查(如确认网络连接、选择正确共享源)入手,深入讲解了核心的网络适配器共享设置、关键系统服务检查、防火墙配置以及终极解决方案——网络重置。通过系统性的步骤,帮助用户彻底修复Win11移动热点无法共享网络的问题。

alice7model的博客 784

ACR 磁共振安全手册 2024 更新版:全面保障 MRI 安全实践

MR 环境:MR 系统周围的三维空间,包含法拉第屏蔽体积和 9 高斯线,医疗设备在此区域可能因暴露于 MR 设备产生的电磁场而构成危险,需进行访问控制以降低风险MR 受控访问区域:MR 系统周围的局部定义区域,包含 MR 环境(包括其静磁场),访问仅限于授权人员MR 抛射物区域:围绕 MRI 系统的 IV 区区域,铁磁物体在此有成为抛射物的风险图一 磁共振环境:场地规划与区域划分。

楚山之石的博客 2600

屏幕适配升级之今日头条总结

因为Android系统的碎片化,手机分辨率和尺寸的多样化所以开发中经常需要进行屏幕适配。 看了今日头条的技术博客之屏幕适配觉得很NB,看完之后,学到很多,以下作为基础部分回顾以及对适配方案进行总结 这是今日头条传送门。   回顾一下基本知识: 屏幕尺寸 是指屏幕对角线的长度 分辨率 是指屏幕横向像素的数量 * 纵向像素的数量。 在进行屏幕适配的时候需要注意几个单位: dp    (设...

wujainEW的博客 886

2026星宸科技数字IC设计笔试带答案

摘要:本文包含四个计算机科学领域的编程与逻辑设计题目解析。第一部分通过C语言程序补充水仙花数判断代码,考查循环结构和函数设计;第二部分分析Verilog代码的D触发器电路,讨论时序约束与时钟频率影响;第三部分详细讲解静态时序分析中的建立/保持时间计算与违例判断;第四部分计算机体系结构题目涉及CPI、MIPS计算和性能加速比分析。最后还包含一个逻辑代数化简的示例,展示基本的布尔代数简化技巧。这些题目全面覆盖了编程基础、数字电路设计、时序分析和计算机性能评估等核心知识点。(149字)

Open 119

Android 屏幕相关概念(1)

1. 术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托罗拉milestone手机是3.7英寸 Aspect Ratio(宽高比率) 指的是实际的物理尺寸宽高比率,分为long和nolong Milesto...

weixin_30433075的博客 87

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WP8.1:关于屏幕尺寸和分辨率的那些事儿

目前市面上的Windows Phone设备越来越多,尺寸和分辨率也越来越多,特别是WP8.1时代的到来。做过wp开发的人都知道应用适配其实较安卓要简单太多了,其中有一个重要原因,就是微软号称所有WP设备都将以2个基准分辨率来发展,即800 : 480和853 : 480。WP8+的应用适配相对来说比较简单,主要让屏幕布局适配这两种比例足矣,想必对WVGA、WXGA和720p三种分辨率及对应的模拟器...

weixin_30378311的博客 219

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

移动端web页面知识小结之像素密度、分辨率、屏幕尺寸

一直以来,本人对移动端分辨率、像素等概念傻傻分不清,特查阅多位牛人博客后总结如下要点,以便日后查看。 文档来源http://weizhifeng.net/you-should-know-about-dpi.html http://www.chinaz.com/manage/2015/0902/441624.shtml http://www.cnblogs.com/2050/p/38772

aiolos1111的专栏 8039

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

“终于懂了” 系列:Android屏幕刷新机制—VSync、Choreographer 全面理解!

“终于懂了” 系列:Android屏幕刷新机制—VSync、Choreographer 全面理解!-腾讯云开发者社区-腾讯云

weixin_29089965的博客 830

移动Web开发入门(二) -- rem屏幕适配

文章目录rem屏幕适配简单屏幕适配方案原理代码实现页面效果缺点1像素边框问题通用屏幕适配方案原理代码实现优化 rem屏幕适配 通过使用rem单位使网页,在不同屏幕尺寸下正常显示的一种移动端开发方案。 简单屏幕适配方案 resize 事件是在浏览器窗口被重置时触发的,如当用户调整窗口大小,或者最大化、最小化、恢复窗口大小显示时触发 resize 事件。 Document.documentElement 是一个会返回文档对象(document)的根元素的只读属性(如HTML文档的 <html>

Sun_blog 364

Z深度相关知识

// Z buffer to linear depth inline float LinearEyeDepth( float z ) { return 1.0 / (_ZBufferParams.z * z + _ZBufferParams.w); } // Values used to linearize the Z buffer (http://www.humus.name/temp/Linearize%20depth.txt) // x = 1-far/near // y = far/n.

yinfourever的专栏 1865

Android屏幕density, dip等相关概念总结

1、几个术语 VGA、HVGA、QVGA、WVGA、WQVGA 这些术语都是指屏幕的分辨率。 VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素; HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320; QVGA:Quarter VGA;即:VGA的四分之一,分辨率为320×240; WVGA:Wide Video

bigconvience的专栏 2万+

Android 屏幕相关尺寸概念

Android 屏幕相关尺寸概念 摘要: 文章目录Android 屏幕相关尺寸概念概念 概念 px:pixel,像素,Android原生API,UI设计计量单位,如获取屏幕宽高。 屏幕分辨率:指在纵向和横向方向上的像素点数,单位是px,一般显示方式是 纵向像素数量横向像素数量,如19201080。 屏幕尺寸:一般是屏幕对角线长度,单位是英寸,常见尺寸有3.5,4.0,4.3,4.7,5.0,6.0...

K_Hello的博客 326

Android屏幕适配的相关概念

屏幕尺寸 指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米。 常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等 屏幕分辨率 指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素来表示,如1960*1080。 屏幕像素密度 指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关...

weixin_40763897的博客 2138

安卓屏幕适配及概念相关

做安卓已经几年了,其中涉及到的各种单位依旧容易混淆,网络上有许多相关的文章,甚至不同的文章相关的概念解释也略有出入,现对一些概念及屏幕适配相关的信息提出我个人的一些理解 相关尺寸的概念   名词 解释 Px (Pixel像素) 不同设备显示效果相同。这里的“相同”是指像素数不会变,比如指定UI长度是100px,那不管分辨率是多少UI长度都是100p...

水煮鱼在飞的博客 460

Android屏幕相关概念

Android屏幕相关的一些概念: Screen size:实际的物理尺寸,测量屏幕的对角线。为简单起见, Android把所有实际的屏幕尺寸分为四个广义大小:small, normal, large, and extra large。 Screen density:屏幕的单位物理区域内的像素的数量,通常简称为dpi(每英寸点数) 。为简单起见, Android把所有实际的屏幕密度分为四个广义

潘洪金的博客 1047

android – 多屏幕适配相关

android – 多屏幕适配相关 作者: 曲天日期: 2011/10/27 1、基本概念 屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸)。android把屏幕分为以下4种:small,normal,large,extra large。 怎么判断? 屏幕密度(Screen Density) -  一块实际的屏幕区域有多少个像

jiangxinyu的专栏 2万+
上一篇: Android实例] Service和广播联合更新UI的例子
下一篇: 音频播放
freemindhack
博客等级 码龄13年 53粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值