android屏幕适配基础知识

android T分屏流程 android T上对分屏流程进行了重构,之前用WINDOWING_MODE_SPLIT_SCREEN_PRIMARY等windowingMode来判断当前窗口是否分屏已经失效;分屏的触发操作放在了wm shell下,运行在systemui进程;将分屏涉及到的reparent、reorder等系列操作封装到WindowContainerTransaction中通过WindowOrganizer的applyTransaction来通知system server进行相关处理实现分屏。 阅读详情

1、基本概念

屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸)。android把屏幕分为以下4种:small,normal,large,extra large。
怎么判断?

屏幕密度(Screen Density) -  一块实际的屏幕区域有多少个像素,一般用dpi衡量(每英寸有多少个点)。相比起medium、high屏幕密度的设备,在一块确定大小的屏幕区域l密度为low的屏幕拥有的像素更少。android把屏幕密度分为4种:low,medium,high,extra high。

如何判断是ldpi,mdpi,hdpi?

方向(orientation) -  屏幕方向分为landscape(横屏)和portrait(竖屏)。

分辨率(Resolution) -  屏幕上的总实际像素数。对屏幕进行适配时,一般不关注它的分辨率,只关注它的屏幕大小和密度。

与密度无关的像素(Density-independent pixel,dp或dip) -  为了保证你的UI适合不同的屏幕密度,建议你采用dp来定义程序UI。
它的计算方法为:px = dp * (dpi / 160)

sp(scale-independent pixel)

如何分辨一个屏幕是ldpi、mdpi、hdpi的方法,见下图

计算屏幕密度

2、怎样适配多种屏幕

a.在manifest里定义你的程序支持的屏幕类型,相应代码如下:
<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”/>

b.对不同大小的屏幕提供不同的layout。

      比如,如果需要对大小为large的屏幕提供支持,需要在res目录下新建一个文件夹layout-large/并提供layout。当然,也可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。

c.对不同密度的屏幕提供不同的图片。
应尽量使用点9格式的图片,如需对密度为low的屏幕提供合适的图片,需新建文件夹drawable-ldpi/,并放入合适大小的图片。相应的,medium对应drawable-mdpi /,high对应drawable-hdpi/,extra high对应drawable-xhdpi/。
图片大小的确定:low:medium:high:extra high比例为3:4:6:8。举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra high为96×96。

不同密度的屏幕对应的图片比例

3、多屏幕适配的4条黄金原则
a.在layout文件中设置控件尺寸时应采用wrap_content,fill_parent和dp。

       具体来说,设置view的属性android:layout_width和android:layout_height的值时,wrap_content,fill_parent或dp比pix更好。相应地,为了使文字大小更好的适应屏幕应该使用sp来定义文字大小。

b.在程序的代码中不要出现具体的像素值。

为了使代码简单,android内部使用pix为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议开发者不要使用具体的像素来表示控件尺寸。

c.不要使用AbsoluteLayout(android1.5已废弃) 。相应地,应使用RelativeLayout。

d.对不同的屏幕提供合适大小的图片。见上面第2部分。

4、需要注意的地方
以上设置适用于android3.2以下的版本。(本人目前开发是在android2.2上,这部分以后再补充)

5、怎样测试你的程序是否支持多屏幕适配
一般使用AVD Manager创建多个不同大小的模拟器,如下图




参考官方地址:http://developer.android.com/guide/practices/screens_support.html

    

推荐一篇文章:

一个草根程序员创业之路的所感所悟-2016 

Android多屏幕适配全攻略 本文还有配套的精品资源,点击获取 简介:Android应用开发中,屏幕适配是确保应用在不同设备上提供一致用户体验的关键。本文详细介绍了Android屏幕分类、资源目录配置、dimens.xml文件的应用、比例适配技术、dp与sp单位的使用、百分比布局和响应式布局的实践、SVG图形资源利用、设计原则和Android Studio工具的运用等多方面知识,旨在帮助开发者全面掌握屏... 阅读详情

相关推荐

量子密钥分发系统的工程实践(四):FPGA在后处理中的核心实现与优化

本文深入探讨了FPGA在量子密钥分发(QKD)系统后处理中的核心实现与优化策略。文章详细拆解了FPGA如何高效完成原始密钥提取、误码协商和私密放大等关键任务,并分享了流水线设计、资源复用及存储器架构优化等工程实践“心法”,旨在解决高速、实时QKD系统中的性能瓶颈,提升密钥生成率。

t8u9v0的博客 388

[转]android – 多屏幕适配相关

1、基本概念 屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸)。android把屏幕分为以下4种:small,normal,large,extra large。怎么判断? 屏幕密度(Screen Density) -  一块实际的屏幕区域有多少个像素,一般用dpi衡量(每英寸有多少个点)。相比起medium、high屏幕密度的设备,在...

iteye_20763的博客 252

CLion for Mac(m1)配置GCC编译器

条件:电脑已经下载过XCode 一. 下载HomeBrew homebrew是一款macos,linux下的包管理工具,我们需要使用他来下载GCC 下载方法: 1.打开终端(terminal) 2.输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ps.有可能会遇到的问题 我当初下载挂了VPN,优快云上还有很多解决问题的方法,可以将错误信

supermario19的博客 7846

android 分屏相关知识点

分屏比例最小值修改 android/frameworks/base/core/res/res/values/dimens.xml的值default_minimal_size_resizable_task 注意:这个值只能比220大,因为如果小的话CTS无法通过,因为CTS里面把这个值写死了220(ActivityAndWindowManagersState.java的DEFAULT_RESIZ...

冰之火的专栏 3619

模仿学习与强化学习结合(IL+RL)有没有代表性论文?未来发展趋势如何?

IL与RL的结合正成为AI研究热点,尤其在机器人控制、复杂博弈等需要边学边练的场景。经典方法如Dagger(2010)和GAIL(2016)开创了先用模仿学习预热、再用强化学习微调的模式。近期工作如IN-RIL(2024)提出交替训练策略,显著提升样本效率。开源项目RoboSchool和StableBaselines3为相关研究提供支持。未来趋势包括:1)混合式智能体结合人类经验与自主探索;2)突破小样本学习、自然语言交互等方向;3)提升安全性、样本效率和可解释性。

CyberSoma的博客 2249

Python学习第1天:初识Python

Python 作为目前最流行的编程语言之一,凭借其简洁优雅的语法和强大的生态系统,成为了无数开发者的首选。本系列文章将带你从零基础入门,逐步掌握 Python 编程的核心技能。今天我们先来认识 Python,并安装好开发环境。Python(英式发音:/ˈpaɪθən/;美式发音:/ˈpaɪθɑːn/)是由荷兰人吉多·范罗苏姆(Guido von Rossum)发明的一种编程语言,是目前世界上最受欢迎和拥有最多用户的编程语言。

tigerhhzz的博客 434

Android多屏适配完美方案

1.多屏适配的概念 2.屏幕的基础概念 3.如何进行适配 4.现实的适配方案  5.理想的适配方案 。。犯懒,直接贴我做的PPT截图好啦。。。

chutianya的专栏 1364

学Simulink--基于Simulink的无迹卡尔曼滤波(UKF)目标跟踪仿真建模示例

本文详细介绍了基于Simulink的无迹卡尔曼滤波(UKF)目标跟踪仿真建模方法。首先分析了UKF相比EKF在强非线性场景下的优势,包括无线性化误差、计算效率高和鲁棒性强等特点。接着阐述了UKF的核心原理,重点讲解了无迹变换(UT)的三个关键步骤:Sigma点生成、非线性传播和加权统计重构。文章还详细说明了二维机动目标的状态向量定义、非线性状态转移模型和雷达观测模型。 在Simulink实现部分,提供了完整的建模步骤和核心代码,包括目标运动模型、雷达传感器模型和UKF算法模块的实现。通过蛇形机动场景的仿真实

xiaoheshang_123的博客 89

Android 屏幕适配之基础知识全解

本章节讲述Android屏幕的基础知识 1.基本概念讲解 1.1.屏幕尺寸 含义:手机对角线的物理尺寸。 单位:英寸(inch),1英寸=2.54cm。 1.2.屏幕分辨率 含义:手机在横向、纵向上的像素点数总和。 一般描述成屏幕的"宽x高”=AxB:屏幕在横向方向(宽度)上有A个像素点,在纵向方向(高)有B个像素点。 例...

听海的博客 875

单片机设计具备断电记忆功能的计时器

本文介绍了如何设计一款具备断电记忆功能的计时器,利用单片机和EEPROM存储器实现了计时器值的保存和恢复。当然,在实际的设计中还需要考虑其他因素,如电源管理、时钟精度等,以确保计时器的正常运行和准确性。选择合适的单片机:在设计计时器时,我们需要选择一款具备存储功能的单片机,以便在断电后能够保存计时器的状态。可以优化显示方式,使用更加直观的界面来展示计时器的值;函数中,我们首先从 EEPROM 中读取计时器的初始值,然后在一个无限循环中每秒钟增加计时器的值,并将新的值写入 EEPROM 中。

RlDart的博客 1094

cherry使用MCP协议Streamable HTTP实践

摘要:Streamable HTTP协议是针对传统HTTP+SSE传输方式的改进方案,解决了连接恢复、服务器资源占用和单向通信等问题。该协议基于普通HTTP实现,支持无状态服务器、纯HTTP服务和多轮对话,同时兼容现有基础设施。通过演示展示了服务端和客户端的配置方法,体现了其灵活性和实用性。MCP(多轮对话协议)作为扩展LLM能力的关键技术,代表着未来交互式AI的发展趋势。

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 563

Android 屏幕适配:基础知识

文章目录1、定义2、相关概念 1、定义 屏幕适配定义:在不同尺寸、分辨率的手机上具有相同的显示效果。 2、相关概念 1、屏幕尺寸 含义:手机对角线的物理尺寸 单位:英寸(inch),1 英寸 = 2.54 cm 2、屏幕分辨率 含义:手机横向、纵向的像素点总和。 单位:px(pixel),1 px = 1 像素点。 手机常见分辨率:320480,10801920。 3、屏幕像素密度 含义...

strugglelin'blog 440

YOLOv11改进 | 网络结构代码逐行解析(二) | yolov11中的Mosaic增强详解

本文给大家带来的是YOLOv10中的Mosaic增强代码的详解,可能有部分人对于这一部分比较陌生,有的读者可能知道Mosaic增强但是不知道其工作原理,具体来说Mosaic增强就是指我们的数据集中的图片在输入给模型之前的一个处理过程(我们的图片并不是直接就输入给模型了,大家的训练结果中的结果检测图片大家可以看到数据集中多个图片会组合在一起这就是简单的Mosaic增强),下面我就来讲解一下其在YOLOv10中工作原理和代码定义,下面图片为一个Mosaic增强后的图片。​。

Snu77的博客 5021

Android屏幕适配的基础知识

尺寸概念resolution:以像素数表示的高度与宽度dpi:dots per inch,一英寸的像素数量分辨率可各种检测软件查得,也可由adb命令行查看:adb shell wm sizedpi可由计算得出,但实际效果是由厂家制定的dpi而定的: 厂家 adb shell getprop ro.sf.lcd_density 计算例1:分辨率为1920*1080,5.5英寸,dpi计算可得: dp

明光的博客 783

Camera2Demo

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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android实战屏幕适配方案-基础知识

最近做了个项目需要适配7寸的平板分辨率(800 x 1280)和5寸的手机分辨率(1280 x 720)针对这两种机型做一个适配,分享下两种手机的适配方案。 可以将安卓适配分为屏幕、图片、尺寸三个方面给大家分享! 屏幕适配 屏幕适配使用的方案有 尺寸限定词 最小宽度限定词 使用布局别名 下面我就来一一介绍,并在项目中使用的例子说明。 首先介绍尺寸限定词 尺寸限定词 描述 sm

技术无他唯手熟尔 683

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android技能树 — 屏幕适配小结

关于屏幕适配,几乎每隔一段时间就会看见有人发出来说XXX方案,实现超级简单的适配方式等等。所以我把我目前了解过的常用的适配方案做个总结,并简单说说原理,从而让大家也初步了解各个方案的实现。(其实很多人都是看见别人写的适配方案,虽然可能实际在使用了,但是却从来没有去了解过这个方案的原理,而且遇到一些简单的坑的时候,因为不知道原理,也无法自己解决。

2401_89824744的博客 698

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【Android基础知识】关于屏幕适配的学习(support-screens)

<supports-screens android:resizeable=["true"| "false"] android:smallScreens=["true" | "false"] android:normalScreens=["true" | "false"] android:la

happy_horse的博客 857

Android屏幕适配-第一篇(基础知识)

一直以来对手机屏幕这块云里雾里的,以前以为用dp就可以了可以满足大部分条件,但是越开发越发现,每个知识点都是非常重要的,而且不是说你看懂了就好了,而要想为什么这样,所以我决定将以前的知识稀松的知识one more time ,亡羊补牢,希望为时不晚,就从屏幕适配开始吧! 参考文章:Android 屏幕适配:最全面的解决方案 谢谢作者给我以学习上的帮助,我写的此篇文字基本上是此篇文章的背诵版,和...

yrmao9893的博客 619

cocos2d 屏幕適配_cocos2d-x 2.x屏幕适配基础

一开始我就忽略了屏幕适配的问题,现在才发现它是多么的重要。通过实践才领悟了其基础概念,而屏幕适配的策略是建立在其上的,有很多,但我还没有认真研究。这里仅把自己对屏幕适配基础知识进行一个梳理。关于屏幕适配,有一个基础单位:像素。像素构成了分辨率,不应该把分辨率理解为大小。因此这里不说大小,只说分辨率;不说长宽,只说横纵。1.FrameSize这个最好理解,就是设备的分辨率,不同的手机有不同的分辨率。...

weixin_39638603的博客 165

Android屏幕适配-重点盘点(2)

当我们出去找工作,或者准备找工作的时候,我们一定要想,我面试的目标是什么,我自己的技术栈有哪些,近期能掌握的有哪些,我的哪些短板 ,列出来,有计划的去完成,别看前两天掘金一些大佬在驳来驳去 ,他们的观点是他们的,不要因为他们的观点,膨胀了自己,影响自己的学习节奏。基础很大程度决定你自己技术层次的厚度,你再熟练框架也好,也会比你便宜的,性价比高的替代,很现实的问题但也要有危机意识,当我们年级大了,有哪些亮点,与比我们经历更旺盛的年轻小工程师,竞争。无论你现在水平怎么样一定要。

xcbyaya的博客 961

面试时Android屏幕适配,Android屏幕适配;知识点+攻略+面试要点

引子屏幕适配是 android开发/面试绕不开的一个问题。本文 将屏幕适配的知识要点完整展现给各位读者。正文大纲android需要做屏幕适配的原因基础知识点(很重要)屏幕适配攻略正文android需要做屏幕适配的原因关键字:android碎片化android面世以来,google开源了android系统,各家厂商各自为政,导致屏幕尺寸没有统一标准,屏幕的宽高比各种各样,屏幕密度也是各个厂家攀比...

weixin_35363895的博客 541

Android屏幕适配;知识点+攻略+面试要点

由于本文罗列的知识点是根据我自身总结出来的,并且由于本人水平有限,无法全部提及,欢迎大神们能补充~将来我会对上面的知识点一个一个深入学习,也希望有童鞋跟我一起学习,一起进阶。提升架构认知不是一蹴而就的,它离不开刻意学习和思考。**这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家,**梳理了多年的架构经验,筹备近1个月最新录制的,相信这份视频能给你带来不一样的启发、收获。,第一时间获取最新知识点Android架构师之路很漫长,一起共勉吧!

2401_84009929的博客 1029

android dp sp px_Android屏幕适配-重点盘点

享学课堂诚邀作者:周周转载请声明出处!引子屏幕适配是 android 开发/面试 绕不开的一个问题。本文 将屏幕适配的知识要点完整展现给各位读者。正文大纲android需要做屏幕适配的原因基础知识点(很重要)屏幕适配攻略正文android需要做屏幕适配的原因关键字:android碎片化android面世以来,google开源了android系统,各家厂商各自为政,导致屏幕尺寸没有统一标准,屏幕的宽...

weixin_39716921的博客 109

android屏幕适配全面总结

最初的设计中,Google手机是有物理键盘的。硬件方面上,第一款谷歌手机具备200MHz以上的处理器,64MB总存储容量,miniSD卡扩展,200万像素的摄像 头+独立拍照按键,非触摸式16位色QVGA(320*240)分辨率的屏幕,物理尺寸是2.5in(2in*1.5in),dpi=160   2008年9月22日,谷歌正式对外发布第一款Android手机HTC T-Mo

w2865673691的专栏 6504

Android TV开发总结(五)TV上屏幕适配总结

前言:前面几篇总结一些TV上的小Sample,开源到GitHub: https://github.com/hejunlin2013/TVSample, 点击链接,可以持续关注。今天总结下TV上屏幕适配.:看下Agenda: 一、屏幕适配的一些背景知识 二、TV屏幕适配怎么适配?有哪些规则? 三、多屏幕适配,android读取res/drawable优先级是什么? 四、屏幕分辨率及density 、

cpuhome的专栏 424
上一篇: android FrameWork家族是怎么组成的?
下一篇: android微信5.0版本的UI架构分析和源码样例.
gridlayout
博客等级 码龄19年 12粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值