安卓的设备的分辨率

DisplayMetrics metrice= new DisplayMetrics();

Display defaultDisplay = getWindowManager().getDefaultDisplay();
defaultDisplay.getMetrics(metrice);

int densityDpi = metrice.densityDpi;
float density = metrice.density;
int heightPixels = metrice.heightPixels;
int widthPixels = metrice.widthPixels;
float xdpi = metrice.xdpi;
float ydpi = metrice.ydpi;
float scaledDensity = metrice.scaledDensity;

dip:于设备无关的像素值,比如说我在中密度上显示的值为50dip,在低密度的设备上显示的值就为50*0.75=37.5px

px:代表物理像素,比如说在中密度上显示的值为50px,注意单位是px,在其他密度设备上显示的值也是50px

densityDpi :每英寸多少个点

density:densityDpi /160;

drawable-hdpi  高密度,通常是指240也就是上述代码中的densityDpi为240

drawable-ldpi 底密度,通常是指120
drawable-mdpi 中等密度,通常是指160

drawable-xhdpi 超高密度,通常是指320

在drawable-mdpi 里放了一张像素为48*48的图片,把该图片设置成button按钮的背景,在不同密度,不同分辨率的设备下获得的数据如下:

densityDpi=120
 density=0.75
 heightPixels=320
 widthPixels=240
 xdpi=120.0
 ydpi=120.0
 scaledDensity=0.75
 intrinsicHeight=36
 intrinsicWidth=36

densityDpi=160
 density=1.0
 heightPixels=480
 widthPixels=320
 xdpi=160.0
 ydpi=160.0
 scaledDensity=1.0
 intrinsicHeight=48
 intrinsicWidth=48

densityDpi=160
 density=1.0
 heightPixels=768
 widthPixels=1024
 xdpi=160.0
 ydpi=160.0
 scaledDensity=1.0
 intrinsicHeight=48
 intrinsicWidth=48

densityDpi=240
 density=1.5
 heightPixels=800
 widthPixels=480
 xdpi=240.0
 ydpi=240.0
 scaledDensity=1.5
 intrinsicHeight=72
 intrinsicWidth=72

densityDpi=240
 density=1.5
 heightPixels=800
 widthPixels=480
 xdpi=160.42105
 ydpi=160.0
scaledDensity=1.5
 dimension=75.0
 intrinsicHeight=72
intrinsicWidth=72

densityDpi=320
 density=2.0
 heightPixels=640
 widthPixels=960
 xdpi=320.0
 ydpi=320.0
 scaledDensity=2.0
 intrinsicHeight=96 //代表图片实际显示的物理像素
 intrinsicWidth=96
由此可知,图片的显示和密度之间存在着莫大的关系,在同等密度下不管设别分辨率多大,图片所显示的大小是一样的,在密度不相同的情况下,图片会进行缩放:例如,在中等密度下图片显示高度为48px,低密度下显示的高度为48*0.75=36,图片会进行缩小;在高密度下显示的高度为48*1.5=72,图片会放大;

由此也可以得出官网中的计算公式: px = dp * (dpi / 160) 即px =dp*density;(density=densityDpi/160)

时间: 2024-08-11 00:23:22

安卓的设备的分辨率的相关文章

腾讯分析移动设备屏幕分辨率分析报告--转

本报告基于2012年12月至2013年1月上半月使用腾讯分析服务的网站的移动流量,针对国内移动设备屏幕分辨率分布进行了详细的统计分析.据CNNIC前不久发布的<中国互联网络发展状况统计报告>,截至2012年12月底,我国手机网民规模为4.20亿,较上年底增加约6440万人,网民中使用手机上网的用户占比由上年底的69.3%提升至74.5%.移动用户规模越来越大,相关的用户数据研究也显得更加必要. 报告摘要:1.目前国内移动设备使用的屏幕分辨率精度整体还很低,主要是Symbian系统机型.功能机和

[Android Wear]安卓穿戴设备Moto 360测评与开发分析

前言: 昨天刚买到了Moto 360,这是楼主目前为止见到的最好的安卓可穿戴设备,一个圆形的手表: BesBuy和官网都卖光了..这是楼主听说补货了去bestbuy买到的. 外形上这就是一块普通的电子表,但其实包含的功能确实不少.最令人心动的就是它圆形的表盘,这比市面上方形的安卓手表更具有吸引力. 唯一的遗憾就是..不是完整的圆形(处女座的..) 这个其实是可以理解的:做成完整的圆形也是可以的,但是那样必然会加大或者加厚表盘--因为需要空间去放IC和一些排线,而美观和实用程度会大大降低.不然的话

WPF中使用DirectShowLib枚举摄像头设备和分辨率

提供window平台下基于Net技术和Qt技术的多点触摸设备应用开发,画板开发,摄像头/展台设备应用开发 本质还是对DX接口的运用,直接代码好理解 1. 定义设备接口 public interface IDevice{ string DeviceName{get;set;} //设备名称 string DevicePath{get;set;} //设备路径 System.Runtime.InteropServices.ComTypes.IMoniker Moniker{get;set;} } 2

初尝微信小程序3-移动设备的分辨率与rpx

屏幕尺寸就是实际的物理尺寸. 分辨率(pt),是逻辑分辨率,pt的大小只和屏幕尺寸有关,简单可以理解为长度和视觉单位. 分辨率(px),是物理分辨率,单位是像素点,和屏幕尺寸没有关系. 微信开发者工具上iphone6尺寸是375,指的是逻辑分辨率,设计图常常给出的750px是物理分辨率.1个pt可以有1个px构成,也可以是2个,还可以有3个甚至更多(其实@2x已经是人眼的极限了,再增加也不会改变清晰度).如果是以iphone6的尺寸开发的话,那么设计图给的物理像素除以2,才是写在代码里的逻辑分辨

不同显示设备下分辨率不同造成的定位错乱问题。

我用了将近3个小时时间研究这个问题,终于用最最最笨的方法解决了.因为实在找不到原因是什么. 台式机分辨率一般情况下为最大1920的设置,笔记本分比率最高是1920,但很大一部分比这个小,这是分辨率: 台式机一般都为19寸及以上,笔记本一般保持在11寸到15.6存之间: 以上两个原因,造成了笔记本显示网页刚刚好只显示中间部分,而台式机显示的更宽, 而且据我观察发现,台式机调试的时候,把页面放大到125%,才是笔记本正常100%的展示效果,在正常情况下,页面不会出现太大问题,可是当有了定位的时候,将

关于ASP.NET MVC4在IIS6中不认识安卓移动设备的解决办法

在IIS7中发现安卓的手机浏览器是可以跳转滴. 项目中是采用***.mobile.cshtml来显示移动视图的. 部署到IIS6.0中发现并没有转到*.mobile.cshtml移动视图. 进过漫长的查找发现,部分浏览器(比如Iphone手机)是可以转到移动视图的. 安卓的手机浏览器并不会自动跳转. 我的解决办法!是在在Application_Start中添加这段代码 DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayM

安卓碎片奇观:一个开发者对付600种ROM4000设备

腾讯科技讯 谷歌 (微博)开发的开源操作系统安卓,秉承开放原则,开放的代价就是自由和一定程度的混乱.安卓生态在软件定制(ROM)和硬件产品上的碎片化,已经不算新闻.而最近一个移动软件开发者公布的数据,也再一次展示了安卓碎片化的最新现状. 数据显示,这名开发者的软件,安装在了近四千种安卓设备上,海量的设备和定制系统,给软件适配带来了不小的负担. 在安卓系统上,全球的手机制造商可以根据免费源码自由修改定制,因此出现了大量的定制版安卓(俗称"ROM"或"UI").在全球的

[Kali_onAndroid]让你的安卓设备跑起kali – kali for android

现在大家手上几乎都有安卓的设备了.要是渗透扫描不开kali虚拟机,直接ssh到手机上去扫描,那是一件多么美妙的事情. 首先看了下官网的文章~额~操作的时候出现了各种问题,好吧~下面是我和小伙伴们的过程~ 分享下自己的经验~ ————————–猥琐的分割线——————— 看看我们需要什么: 0×001 一个跑着安卓系统的设备,手机 平板 htpc 什么都行 但前提是 他已经获得了root权限(相信对大家来说不难,提权呗)系统是2.1以上的 0×002 又有至少5g的sdcard存储空间 0×003

谷歌:开发Nexus设备是为了测试安卓新系统

Nexus 6已经通过谷歌Play Store和摩托罗拉官网开售,近期谷歌高管Hiroshi Locheimer在接受采访时谈及了Nexus项目以及谷歌最新安卓系统5.0.菠菜娛樂賭場 在谈到安卓Nexus设备时,Hiroshi Locheimer表示,Nexus项目并非是为了跟其他手机制造商进行竞争,该项目背后的理念就是为了测试最新版安卓系统.他表示,Nexus品牌目标绝非是为了获得市场份额. 此外,Hiroshi Locheimer也提到,安卓5.0是首款在桑达尔·皮查伊(Sundar Pi