Android屏幕适配分析

Android 屏幕适配:wm density 320 与 480 对 UI 布局的 2 种影响分析 本文深入解析Android屏幕密度调整对UI布局的影响机制,重点分析`adb shell wm density 320`与`adb shell wm density 480`两种设置下的视觉差异和开发适配策略。通过对比实验和系统级渲染机制剖析,帮助开发者掌握多密度资源管理和布局设计原则,提升应用在不同设备上的显示效果。 阅读详情
1、首先从布局考虑

Android的界面是由布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。

每种布局都有其特点,你可能会郁闷无法掌握好每种布局的使用,其实不管一个界面多复杂,偶们只需上述的一两种布局就可以实现,android提供这么多的布局供偶们选择只是为了方便偶们的开发。

本人习惯用LinearLayout,可能由于个人习惯,所以觉得线性布局的条理性更强一点,LinearLayout布局的子控件有一个很重要的属性,android:layout_weight。该属性将会在后面讲到,在这里只是建议大家选择一种自己比较熟悉的布局,自己的条理性强点,在屏幕尺寸发生变化时,能对子控件大小和位置的变化有一定的把握,这样才能做好屏幕适配。

l 2、px、dp和dip的关系

布局和子控件都有两个重要属性,layout_height和layout_width,用于指定控件的大小。系统还提供了几个属性供偶们使用,

1)fill_parent

设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。

2) wrap_content

设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。以TextView和ImageView控件为例,设置为wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。设置一个视图的尺寸为wrap_content大体等同于设置Windows控件的Autosize属性为True。

3)match_parent

Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了。

更多情况下,为了界面可以适应不同屏幕分辨率的手机,偶们需要限制控件的大小,这里就要用到px、dp、dip、sp等等,这里只简单介绍下px和dip,其他在此不做阐述。

px: pixels(像素),不同的设备不同的显示屏显示效果是相同的,是绝对像素,是多少就永远是多少不会改变。 显然为了适配不同手机屏幕的显示,使用px来指定控件的大小是不行。

dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这 这个不依赖像素。

这里要特别注意dip与屏幕密度有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致dip不能正常显示。在屏幕密度为160的显示屏上,1dip=1px,有时候可能你的屏幕分辨率很大如720*1280,但是屏幕密度没有正确设置比如说还是160,那么这个时候凡是使用dip的都会显示异常,基本都是显示过小。

dip的换算:dip(value)=(int) (px(value)/1.5 + 0.5)

dp: 很简单,和dip是一样的。

所以在需要限定控件大小的时候,建议使用dip。

l 3、屏幕的分类

1)以总像素数分,文本的size等都要改,如下图所示:



每一个分类都有其最小分辨率,如下,可根据分辨率划分种类:



2)以屏幕密度分,提供不同的图片,如下图所示:



Android 寻找最佳资源原理:

1, 排除与设备设置不符合的资源

2, 根据限定词(qualifier)的优先级,按照顺序查找

3, 在限定词下,是否存在资源路径

4, 排除不包含在限定词中的资源路径

5,  继续执行不同的限定词查找,直到找到相应的资源

如下图所示:(提供英文版和中文版)



l 4、layout_weight属性

这个属性其实很好用,一般和android:layout_height="fill_parent"或android:layout_width="fill_parent"一起使用,它用于描述该子元素在剩余空间中占有的大小比例。加入一行只有一个文本框,那么它的默认值就为0,如果一行中有两个等长的文本框,那么他们的android:layout_weight值可以是同为1。如果一行中有两个不等长的文本框,那么他们的android:layout_weight值分别为1和2,那么第一个文本框将占据剩余空间的三分之二,第二个文本框将占据剩余空间中的三分之一。android:layout_weight遵循数值越小,重要度越高的原则。android屏幕如此繁多,不可能都是等比例缩放的,所以单纯使用dip来设置控件也是行不通,与layout_weight属性灵活结合使用,增强界面的适应性。

l 5、drawable资源

首先:你需要在AndroidManifest.xml文件的元素如下添加子元素

<supports-screens android:anyDensity="true"  android:largeScreens="true"  android:normalScreens="true"  android:smallScreens="true"  android:xlargeScreens="true" /> 

名如其意,以上是为我们的屏幕设置多分辨率支持(更准确的说是适配大、中、小三种密度)。android:anyDensity="true" ,这一句对整个的屏幕都起着十分重要的作用,值为true,我们的应用程序当安装在不同密度的手机上时,程序会分别加载hdpi,mdpi,ldpi文件夹中的资源。相反,如果值设置为false,即使我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240×320像素的手机,如果设置android:anyDensity="false",Android系统会将240 x 320(低密度)转换为 320×480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源。
细心的人会发现自android2.0开始之后drawable文件被三个文件夹drawable-hdpi,drawable-mdpi,drawable-ldpi三个文件夹所取代,有些编程人员为了让应用程序默认地加载某些图片,他们会特意地去在android2.0之后的应用程序中重新创建drawable文件夹,其实这样做完全没有必要,通过第一段的分析我们得知,android:anyDensity="false",则应用会将大小密度转变成中密度,从而去加载mdpi中的资源。这里同样,当android:anyDensity="false",则应用会去加载mdpi中的资源。

总结一下:
第一:android:anyDensity="true",系统会依据屏幕密度,自动去找对应的文件夹
第二:android:anyDensity="false",
(1)如果drawable-hdpi,drawable-mdpi,drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载drawable_mdpi文件夹中的资源
(2)如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源。
(3)如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有对应的图片资源,那么系统会加载drawable-mdpi文件夹中的资源

注意上图各种文件夹的不同表示。
drawable-hdpi 该图片即适用于横屏,也适用于竖屏
drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹中的资源

drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源


原文链接:http://blog.youkuaiyun.com/amzkqi/article/details/17550749


Codex接入MATLAB MCP服务器:从配置到实战的全流程记录 模型上下文协议(MCP)为AI编程工具提供了连接外部软件的标准接口,就像给AI装上万能USB,使其能直接操控本地的复杂应用。在MATLAB这类闭源重型工具中,AI编程因许可证、工作区隔离而难以形成闭环,而通过官方MCP服务器,Codex能够调用MATLAB引擎执行代码、读取变量并返回图表结果,将代码生成与运行验证真正打通。这一方案在神经网络拟合、控制系统阶跃响应、图像处理以及hprof文件分析等工程场景中,能显著提升自动化效率。文章围绕Codex桌面版接入MATLAB MCP的全流程,涵盖环境准备、配置命令 阅读详情

相关推荐

JWT实战:5分钟搞定Spring Boot集成JWT认证(含完整代码示例)

本文详细介绍了如何在Spring Boot中快速集成JWT认证,提供完整的代码示例和配置指南。通过JWT实现无状态认证,解决分布式系统中的会话管理问题,提升系统扩展性和安全性。涵盖令牌生成、验证、Spring Security整合及生产级优化方案。

weixin_29327525的博客 457

Android分辨率适配

这可以确保布局在不同分辨率的设备上看起来相似。例如,可以创建不同分辨率下的布局文件,将它们放置在不同的文件夹中,以确保在不同的设备上使用正确的布局。缩放位图:使用缩放位图可以确保图像在不同分辨率的设备上都以适当的尺寸呈现。在Android开发中,可以将图像放在不同的文件夹中,以确保在不同的设备上使用正确的图像。动态布局:使用代码编写动态布局,可以确保布局在不同分辨率的设备上以适当的比例进行缩放。综上所述,通过使用相对单位、限制符、缩放位图和动态布局等方法,可以在开发Android应用程序时进行分辨率适配。

lixintyw的博客 805

No Target Connected 错误时的一种情况

STM32的SWD烧录模式No Target Connected 错误的一种情况 STM32的SWD烧录模式No Target Connected 错误时的一种处理情况 这是我第一次烧板子的时候遇到的问题,在给板子download的时候出现了“No Target Connected”的错误,这里讲一种解决方法。不一定适用于全部状况,但是可以作为一种纠错方法。 打开 Options for Target… 1.首先点击Options for Target…这个像魔棒一样的按键打开,会出现这个页面 2.点击

Logan_CodeGou的博客 1万+

Android之屏幕适配方案

在说明适配方案之前,我们需要对如下几个概念有所了解:屏幕尺寸,屏幕分辨率,屏幕像素密度。屏幕尺寸指屏幕的对角线的物理长度,单位是英寸,1英寸=2.54厘米。比如常见的屏幕尺寸:5.0、5.99、6.0等等屏幕分辨率是指手机在横向、纵向上的像素点数总和,单位是px,1px=1个像素点,一般以纵向像素*横向像素。比如分辨率2160x1080的手机,表示高度上有2160个像素点,而宽度上有1080个像素点,屏幕分辨率为:2160*1080。

ChenYiRan123456的博客 7993

命名管道和匿名管道

我们知道进程间是可以通信的。可以达到数据传输、资源共享、事件通知、进程控制等目的。进程间通信主要包括管道、系统IPC,套接字等。 管道分为三种: 普通管道:一是单工,只能单向传输 ,二是仅能在父子进程或者兄弟进程中使用。 流管道:去除了第一种限制,为半双工,可以双向传递, 命名管道:去除了第二种限制 ,可以在很多并不相关的进程 中进行通信。 1、普通管道 int pipe(int f...

ffsiwei的博客 1万+

多模态轨迹预测:行人、车辆的交互式推理

多模态轨迹预测:行人、车辆的交互式推理 ,人工智能,计算机视觉,大模型,AI,本文围绕多模态轨迹预测中行人与车辆的交互式推理展开,介绍了其定义,即综合多种信息预测交通参与者未来多种轨迹。涵盖基础概念如轨迹表示、模态、交互关系,技术框架包括数据处理、特征提取、预测模型(物理、机器学习、深度学习模型等)及结果评估。还探讨了交互式推理方法、面临的不确定性处理等挑战、应用场景、未来发展方向、相关工具及实际案例,展现了该技术在智能交通等领域的重要性与发展潜力。​

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

android分辨率适配总结

1.  物理尺寸:就是所说的几寸的屏幕,代表屏幕对角线的长度,比如3.5寸、3.7寸、4寸、7寸等。    分辨率:是屏幕总共能显示的像素数,通常我们都说几百×几百,比如240*320,320*480,480*800等    像素密度(DPI):DPI的全称是dots per inch,每英寸点数.    这三个参数,任两个确定后,第三个量就是确定了。公式为:某边的分辨率(总像素数)= 该边

星歌凰言 1029

华为OD机试 - TLV格式(Python/JS/C/C++ 2025 C卷 100分)

两端通过TLV格式的报文来通信,现在收到对端的一个TLV格式的消息包,要求生成匹配后的(tag,length,valueOffset)列表。和需要匹配的n个tag对应的n行匹配结果,每一行由长度和偏移量组成。第二行:需要匹配的tag数量n(0 < n < 1000)后面N行:需要匹配n个tag值(十进制表示),递增排列。标签10(0A)存在,长度3,valueOffset=2。标签15(0F)长度4,valueOffset=2。标签14(0E)长度2,valueOffset=8。

学Java,找哪吒 2042

android屏幕适配density,Android屏幕适配方案分析

为什么要屏幕适配Android开发过程中我们常用的尺寸单位有px、dp,还有一种sp一般是用于字体的大小。但是由于px是像素单位,比如我们通常说的手机分辨例如1920*1080都是px的单位。现在Android屏幕分辨率碎片化720x1280、1080x1920、2280x1080,这就造成例如187px会在各个分辨率的机型上都是显示一样大小的,那肯定不是我们想要的效果,所以用px单位我们是难以达...

weixin_34916566的博客 1311

Linux安装MinIO(图文解说详细版)

最近开个新坑,就是在linux环境中操作开发环境,带大家玩转Linux,会整理出一篇Linux的专栏,欢迎大家订阅!! 富贵同学linux环境为CentOS7.8 版本。 上期跟大家说了一下OpenJDK的安装,这次说一下minio的安装 第一步,进入/opt 目录,创建minio文件夹 cd /opt mkdir minio 第二步,wget下载安装包: wget https://dl.minio.io/server/minio/release/linux-amd64/minio 第三步,进入m

编码人生 5万+

【异常】Cursor IDE 扩展主机超时错误处理文档The agent execution provider did not respond within 4 seconds.

该错误通常是 Cursor IDE 的临时性问题,不影响项目代码。大多数情况下,重新加载窗口或重启 IDE 即可解决。如果问题持续,可按上述进阶方案排查。重新加载窗口(最快)重启 IDE检查系统资源清理缓存检查扩展更多关于 AI+教育领域的干货,可以关注我的微信公众号第一时间获取哦~

奶爸的编程之路,也就一周冷个三天 2707

【前端】Android屏幕适配方案分析

Android屏幕适配方案分析

Hanrovey Blog 505

LabVIEW实现TCP通信

在本节中,我们将简要探讨TCP通信的基础知识,并以工业物联网平台TLINK中的云端设备数据发布设计为例,详细阐述在互联网环境下TCP客户端应用程序设计的基本方法。

不脱发的程序猿 1967

【转】Android屏幕适配方案分析

Android屏幕适配方案分析 为什么要屏幕适配 Android开发过程中我们常用的尺寸单位有px、dp,还有一种sp一般是用于字体的大小。但是由于px是像素单位,比如我们通常说的手机分辨例如1920*1080都是px的单位。现在Android屏幕分辨率碎片化720x1280、1080x1920、2280x1080,这就造成例如187px会在各个分辨率的机型上都是显示一样大小的,那肯定不是我们...

eaway2009的专栏 449

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android屏幕适配方案分析

为什么要屏幕适配 Android开发过程中我们常用的尺寸单位有px、dp,还有一种sp一般是用于字体的大小。但是由于px是像素单位,比如我们通常说的手机分辨例如1920*1080都是px的单位。现在Android屏幕分辨率碎片化720x1280、1080x1920、2280x1080,这就造成例如187px会在各个分辨率的机型上都是显示一样大小的,那肯定不是我们想要的效果,所以用px单位我们是难以...

weixin_33709590的博客 162

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android大屏适配_Android屏幕适配方案分析

为什么要屏幕适配Android开发过程中我们常用的尺寸单位有px、dp,还有一种sp一般是用于字体的大小。但是由于px是像素单位,比如我们通常说的手机分辨例如1920*1080都是px的单位。现在Android屏幕分辨率碎片化720x1280、1080x1920、2280x1080,这就造成例如187px会在各个分辨率的机型上都是显示一样大小的,那肯定不是我们想要的效果,所以用px单位我们是难以达...

weixin_42513512的博客 655

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

android开发根据分辨率设置高度,最详细的Android屏幕适配方案分析

为什么要屏幕适配Android开发过程中我们常用的尺寸单位有px、dp,还有一种sp一般是用于字体的大小。但是因为px是像素单位,比方我们通常说的手机分辨例如1920*1080都是px的单位。现在Android屏幕分辨率碎片化720x1280、1080x1920、2280x1080,这就造成例如187px会在各个分辨率的机型上都是显示一样大小的,那一定不是我们想要的效果,所以用px单位我们是难以达...

weixin_42609225的博客 2030

Android屏幕适配全面分析

本文适合对屏幕适配有一定了解的读者,试图尽可能全面的阐释出Android屏幕适配问题的本质和解决方案,对实现细节描述可能不够详细,感兴趣的同学可自行查阅相关资料。第一次发文,欢迎大家批评指正。 主要问题 Android设备差异化非常大,分辨率不同、屏幕尺寸不同、屏幕长宽比也不同。 分辨率方面,目前主流标准分辨率有720p、1080p、2k、4k等,根据移动观象台数据显示,2016年4季度,安

u010524509的博客 889

Android 屏幕适配问题全分析

为什么会产生屏幕适配问题?产生屏幕不适配的原因主要有这几点:    1.屏幕尺寸 2.屏幕分辨率  3.屏幕像素密度  解决的办法有:1.在布局中使用  content(居中)     weight(权重)      match_parent(填充)2.使用相对布局,禁用绝对布局3.使用屏幕方向限定符重要概念什么是屏幕尺寸、屏幕分辨率、屏幕像素密度? 什么是dp、dip、dpi、sp、px?他们之...

______夏日飞雨 627

android屏幕适配问题分析及各种解决方案优缺点分析

从事android开发已有5年之久,项目中遇到的屏幕适配的问题也有n次了,可是有一个很奇怪也很让人头疼的现象让从事多年开发的我很不爽。什么问题呢,就是“适配虐我千万遍,我见适配如初见”,真是想说一句fuck,这次我终于坚决的征服掉了她,下面就来具体讲解征服她的全过程,一定要有决心,耐着性子慢慢看。 &amp;amp;amp;amp;emsp;&amp;amp;amp;amp;emsp;本着不重复造轮子的理念,对现有适配方案统统拿来细细研读了一番,得出的结论是已基本可以解决适配问题,但是

MR CUI的专栏 1990

Android屏幕适配详细分析

android中图片适配是一件很棘手的事情,本篇文章详细的介绍屏幕显示的原理,为什么会资源文件中会存在 drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi等文件夹,为什么要使用dp作为单位等等。 首先从这两张图片的显示效果开始说起 1、这是一张200x200的图片在不同的手机上的显示效果。很明显第二张图

wudiisss的专栏 1834

android屏幕适配测试,Android屏幕尺寸详解,屏幕适配

1、重要概念随着Android厂商对系统的不断定制,Android出现越来越多不同尺寸的手机,由于尺寸和分辨率等不同,从而导致Android的适配成为一个老大难的问题,今天我们就来聊聊Android中的屏幕尺寸。我们先了解一下几个重要的概念:什么是屏幕尺寸、屏幕分辨率、屏幕像素密度?什么是dp、dip、dpi、sp、px?他们之间的关系是什么?什么是mdpi、hdpi、xdpi、xxdpi?如何计...

weixin_39633165的博客 561

[整理]Android屏幕适配(不同的屏幕分辨率和尺寸)

Android屏幕适配目录:Android屏幕适配 概念区分 换算关系 划分标准 Android手机常见尺寸和对应分辨率 部分Android测试机分析在实际开发过程中,会遇到不同的机型,为了让控件和布局要在不同屏幕上显示相近的样子,就得在drawable-ldpi/mdpi/hdpi/xhdpi/xxhdpi不同的文件夹下放置图片素材或者在xml中用dp作为间距单位,用sp作为文字的单位。因此要搞清

TTKatrina的博客 3万+
上一篇: 修改EditText的光标颜色
下一篇: Eclipse导入项目:No projects are found to import
King·Forward
博客等级 码龄14年 117粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值