热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android屏幕显示相关字段的理解

2019独角兽企业重金招聘Python工程师标准一、字段1.density(密度):描述设备屏幕一个区域内占用多少像素,不同的设备有不同的密度,是

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、字段

1.density(密度):描述设备屏幕一个区域内占用多少像素,不同的设备有不同的密度,是个概念名称,单位为dpi

2.dpi:dots per inch ,来表示某一英寸内的像素点,是密度的单位。一个设备可能支持多个分辨率,故dpi会根据像素变化(很多设备支持多分辨率切换)

3.px(像素):屏幕基本单位

4.dp:Density-independent pixel根据设备的density的不同,计算后与px的比值为

px/dp=当前设备dpi/160

5.inch(英寸):屏幕对角线长度,1 inch = 2.54cm

6.resolution(分辨率):设备屏幕的总像素点


二、dp和px使用理解

网上看到大多数对dp理解文章,之前也非常笃信。后来实际开发中发现并不只如此。网上讲的大多只是初步一半的解释,仔细翻过api文档中的朋友会发现:

Supporting Multiple Screens

http://developer.android.com/guide/practices/screens_support.html


支持多个设备屏幕,不同设备有不同的density,dpi会随分辨率变化,dp比值也会变化。故网上大多数讲情景都是设备dp/px=dpi/160相同的2个设备上运行时一致的。但当同一个apk在2个比值不相同的设备上运行时,效果肯定有很大差异的。


应用开发都希望用一个apk能在所有的设备上正常显示,效果一致,不需要再做第2次无用开发。

相信实现过的人,都有不同的实现方式。

下面是作者基于同一个apk在不同设备上的情景分析。

1.在同一个设备上,可能支持不同分辨率,密度不变,dpi会变化:

dp作为单位:此时能自动适应当前设备不同分辨率,正常显示。并且只需要一个布局文件即可。

px作为单位:需要2套不同分辨率的布局文件


2.不同设备上,不同分辨率,不同密度:


dp作为单位:此时不一定能自动适应设备不同分辨率,当设备的dpi与之前正常显示的设备一直时,能正常显示。否则,同样需要2套dp的布局才能正常显示,见下图分析。



px作为单位:需要2套不同分辨率的布局文件



三、总结:

作者在实际开发中,主要是固定电视(最多也就遇到过4个尺寸的,2套分辨率)上开发,大多数还是用px作为基本单位,2套布局,1套高清资源。因为尽管各个厂家设备密度怎么变化,px永远是基本单位,能做到精确布局,但就是会增加一点维护成本。

在手机开发中,还是大多数用dp即可。方便快捷,能适应大部分机型。但是部分分辨率和尺寸又小的机子,用dp做不到完全适配,部分文字过长就会被遮挡。可以用多个value值来适配。


以上是自己的理解,欢迎
纠正。



转:https://my.oschina.net/blackylin/blog/186527



推荐阅读
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
author-avatar
blue秋夜听雨321
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有