Graphics-Density (上)

2024-02-14 10:18
文章标签 density graphics

本文主要是介绍Graphics-Density (上),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

支持Android系统的手机的种类很多,每种手机的屏幕大小和分辨率可能有所不同(屏幕像素密度),Android系统提供了方法在这些有着不同大小,屏幕像素密度的手机上自动调整显示界面的布局和大小,同时Android也提供了相关API允许开发者针对不同的屏幕大小和显示密度来控制UI以便应用在不同配置的设备屏幕上都有良好的显示效果。

尽管Android系统提供了屏幕自适应功能可以解决大部分不同屏幕UI显示的问题,应用还是需要做一些能支持不同屏幕配置的工作,这样可以给最终用户在不同屏幕配置下都取的很好的用户体验。

在介绍本例之前,先解释一些术语:

屏幕大小(Screen Size): 设备屏幕的物理尺寸(对角线长度),比如3寸屏,4寸屏。为简单起见,Android将屏幕大小分成四类: small (小尺寸), normal(正常尺寸), large(大尺寸), extra large(超大尺寸)。

屏幕显示密度(Screen Density): 单位尺寸显示的像素数目。通常采用dpi 为单位( 点数/英寸)。比如“高密度“的屏幕在单位尺寸内显示的像素数目大于”低密度“的屏幕。为简单起见,Android也将屏幕显示密度(后面简称屏幕密度或密度)分为low(低密度), medium(中等密度),high (高密度), extra high(超高密度)。

屏幕纵横方向(Orientation): 从用户角度看,显示屏幕可以为横向(landscape)或是纵向(portrait) ,用户在应用运行时可以改变屏幕的纵向或是横向。

屏幕分辨率(Resolution): 屏幕支持显示的像素总数。在谈支持多种屏幕配置上,应用通常不之间操作屏幕的分辨率,而是要关心屏幕的大小和密度。

密度无关像素(Density-independent pixel– dp) : 在定义Layout是使用到的与设备无关虚拟像素单位。dp 定义为 160dpi 屏幕上一个像素大小。 160dpi 被Android系统认为是“中等密度”的屏幕。使用dp为单位时,当应用运行时,Android会自动根据屏幕实际的大小和密度放大或是缩小Layout中的控件达到界面屏幕自适应的效果。 有 dp 值到实际像素值的换算很简单: px = dp * (dpi /160) 。

Android支持的屏幕范围 Android系统从1.6开始可以支持多个屏幕大小和屏幕密度,上面说过Android将屏幕大小和屏幕定义都分为四类,采用第一代Android手机T-Mobile G1的屏幕(HVGA)做为基准。下图显示了屏幕大小和屏幕定义的一个粗略分类:


应用可以通过提供备选资源的方法来支持不同的屏幕配置。典型的做法是为不同屏幕大小或屏幕密度提供不同的的Layout和图片资源。Andorid系统运行时可根据当前屏幕的实际配置来选择合适的Layout和资源显示用户界面,通常并不需要为每个屏幕大小和屏幕密度的组合都提供不同的Layout和资源,Android 系统会非常“智能”的来处理不屏幕配置下界面的显示问题。

屏幕密度无关性(Density independence),  如果说应用具有“屏幕密度无关性”只的是应用的UI组件中不同的屏幕显示密度小其实际物理尺寸保持不变。

保持界面的实际物理尺寸非常重要,没有图,一个按钮在“低密度”屏幕上的物理尺寸比“高密度”屏上尺寸要大,下面两幅图显示了“不支持屏幕密度无关性”和支持“屏幕密度无关性”的显示效果:






Android 系统采用下面两种方法来帮助应用实现“密度无关性”:

  • 系统根据当前屏幕密度为采用dp 为单位的Layout 组件自动缩放以适应屏幕。
  • 系统根据当前屏幕密度为Drawable 资源进行缩放。

因此在大部分情况下,可以通过使用dp为单位给Layout中的组件指定大小,和正确使用”wrap_content”属性来达到“屏幕密度无关性”。但对应bitmap 资源来说,自动的缩放有时会造成放大缩小后的图像变得模糊不清,这是就需要应用为不同屏幕密度配置提供不同的资源:为高密度的屏幕提供高清晰度的图像等。





这篇关于Graphics-Density (上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/708226

相关文章

Detection简记2-DAFE-FD: Density Aware Feature Enrichment for Face Detection

创新点 1.使用密度估计模型增强检测中的特征图 总结 整个流程还是很清晰的。 conv1-3的特征图经过密度估计模块由检测器D1进行检测。 D2-4分别是四个检测器。 FFM是特征融合模块,将不同层不同大小的特征融合。 FFM网络结构如下: 首先使用1X1的卷积减少两组特征的厚度到128,然后使用双线性插值统一两组特征图的尺寸,然后相加。类似于cvpr2017的SSH。 多尺度检测器的网

2020-08-21 利用Graphics.DrawMeshNow绘制运行时Gizmos,VR可用,HDRP可用

先放效果图: 功能本身为测试用例,所以写的并不是很严谨,三角线使用的是缩放后的圆柱Mesh,黄色使用Box的Mesh,绿色使用Sphere的Mesh。 box和sphere也可以同时生成多个,但需要修改VrGizmos.cs中的两个方法DrawSphere、DrawBox,逻辑类似三角线的方法DrawSegments 放上VrGizmos.cs的源码: using System.Coll

驱动开发系列15 - Linux Graphics Xorg 详解

目录 一:概述 二:图形硬件概览         1. 帧缓冲区         2. 显卡的图形加速功能 三:X图形(Xorg)         1. 显示管理器(Display Manager),启动和登录         2. X服务器实例         3. X网络协议和客户端库         4. X客户端/服务器2D api         5. X客户端/服务

驱动开发系列16 - Linux Graphics DRM和KMS内核模块介绍

一:概述         “直接渲染管理器”(DRM)和“内核模式设置”(KMS)API 是 Linux 图形系统的重要组成部分。然而,关于它们具体是什么的文档非常难以找到——而谷歌搜索到的大部分内容都是完全过时的。看起来在这个领域工作的人们太忙了,无法进行文档编写。这篇文章提供了关于 DRM 内核模块内部实现细节的更详细信息。 二:DRI、DRM和KMS的目的         一开始,所有

驱动开发系列15 - Linux Graphics 图形生成显示过程

目录 一:概述 二:图形硬件概览         1. 帧缓冲区         2. 显卡的图形加速功能 三:X图形(Xorg)         1. 显示管理器(Display Manager),启动和登录         2. X服务器实例         3. X网络协议和客户端库         4. X客户端/服务器2D api         5. X客户端/服务

驱动开发系列15 - Linux Graphics 图形生成和显示过程

一:概述         这篇文章简要概述了在Linux系统上生成图形的过程。 二:图形硬件概览         1. 帧缓冲区         所有的显卡都会生成一个“帧缓冲区”,它是一个块显存,里面存放着RGBA像素数据,并且显卡知道这块区域是“扫描输出缓冲区”,即用于显示的缓冲区。          对于模拟信号输出来说,显卡的输出电路会周期性读取帧缓冲的每个像素,并在合适的时间产

Graphics简单汇总

1、主页面布局文件 activity_main.xml(只有2个button按钮) <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"andro

Log,Toast,SPUtil,Density,SDCard,ScreenUtil,AppVersion,KeyBoard,NetWork,HttpUtil工具类

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自【张鸿洋的博客】 最近统一整理下工具类,以下是栏目,慢慢的就会越来越丰富 http://blog.csdn.net/u013210620/article/category/6251289 1、LogUtil package com.exampl

Android 5.0 parseSdkContent failed Could not initialize class android.graphics.Typeface

在进行android开发过程中,忽然发现经常弹出来parseSdkContent failed 这个错误,然后google了下解决办法 Note: it happens when you have 2 versions of SDK and eclipse, both in the same computer (and using the same .android file), if yo

驱动开发系列12 - Linux Graphics 图形驱动概述(一)

目录 一:概述 二:图形硬件         2.1 硬件概述         2.2 总线类型         PCI(外设组件互连)         AGP(加速图形端口)         PCI-X         PCI-Express (PCI-E)         2.3 虚拟内存和物理内存         显存         表面         3D引