首页 > 编程知识 正文

android获取屏幕宽度和高度,修改app显示比例

时间:2023-05-05 08:18:05 阅读:139736 作者:2172

(一)不同的layout

安卓手机的画面尺寸有480 x320、640 x360、800 x480、854 x480等各种各样。 怎样才能使APP自动适应不同的画面呢? 其实很简单。 只要在res目录下创建不同的layout文件夹,例如layout-640x360、layout-800x480,所有的layout文件都会在编译后写入R.java中,但系统会显示在屏幕上但是,根据分辨率添加layout文件时,原始文件夹和资源layout必须存在。 如果不存在就会发生错误。 此外,命名layout文件夹时必须遵守这些规则。 如果将layout-640x360的数量放在小数之前,则会发生错误。 下图:

即使这样设置,为什么手机会发现没有根据分辨率选择layout呢? 经过多次测试,我发现问题出在这里。 请看截图:

本来画面大小的选择就很奇怪,把layout文件夹下的所有XML布局文件设定为非custom选项就可以了。 这个可以设定所需的默认大小。

这里选择2.7英寸作为默认。

这将启动程序,您可以基于像素选择layout文件

关于安卓的nodpi、xhdpi、hdpi、mdpi和ldpi作者:

lizongbo发表于22:43 .周三,1月12th,2011日

版权声明:可以自由转载,转载时请务必以超链接形式注明文章

原始来源和作者信息及本版权声明。

http://618119.com/archives/2011/01/12/205.html

关于安卓的nodpi、xhdpi、hdpi、mdpi和ldpi

首先是几个基本概念:

1 .屏幕大小Screen size

即显示画面的实际大小,沿画面对角线进行测量。

为了简单起见,安卓将所有的屏幕尺寸分为小、普通、大、超大4种尺寸。 分别对应small、normal、large、and extra large。

在APP应用程序中,您可以为这四种大小提供不同的自定义屏幕布局。 平台将根据屏幕的实际大小选择相应的布局进行渲染。 这个选择在程序方面是透明的。

2 .屏幕宽高比Aspect ratio

纵横比是屏幕的物理宽度和物理高度的比例关系。 APP应用程序可以使用有限的资源提供给定宽高比的屏幕布局资源。

3 .屏幕分辨率Resolution

屏幕上显示的物理像素总数。 需要注意的是,分辨率通常以宽度x高度表示,但分辨率并不意味着特定的屏幕纵横比。

在Andorid系统中,APP应用程序不直接使用分辨率。

4 .密度密度

根据像素分辨率,指定可以在屏幕上物理显示的宽高度范围内的像素数。

在相同高度的区域中,低密度显示器可以显示较少的像素,而高密度显示器可以显示更多的像素。

画面密度非常重要。 因为在其他条件不变的情况下,固定宽度和高度的UI组件(例如按钮)在低密度显示器上看起来较大,在高密度显示器上看起来较小。

为了简单起见,安卓将所有的屏幕分辨率分为4种尺寸。 小、普通、大、超大(分别对应small、normal、large、and extra large。

APP应用程序可以为这四种大小分别提供不同的资源。 平台透明地缩放资源以适应指定的屏幕分辨率。

5 .设备独立像素独立像素(DP )。

APP应用程序可用于定义UI组件的虚拟像素单元,并描述布局大小和位置,而与密度无关。

设备的独立像素相当于160 dpi屏幕上的物理像素。

在程序执行过程中,系统根据屏幕实际密度透明处理任何需要缩放的独立设备像素单元。 将设备独立像素转换为屏幕的实际像素的换算很简单。 pixels=dps*(density/160 )。

例如,在240 dpi的屏幕上,一个设备独立像素等于1.5物理像素。 为了确保UI组件在不同的屏幕上正确显示,强烈建议您使用“设备独立像素单元”定义APP应用程序UI。

4种屏幕大小分类: small、normal、large、and xlarge

四种密度分类:ldpi(low )、mdpi (medium )、hdpi (high )、andxhdpi (axtrahigh ) )。

需要注意的是, xhdpi是从Android2.2(APIlevel8)增加的分类。

xlarge是从Android2.3(APIlevel9)开始增加的分类。

DPI是“dot per inch”的缩写,是每英寸的像素数。

典型屏幕: ldpi为120,mdpi为160,hdpi为240,xhdpi为320。

获取画面分辨率信息的两种方法:

displaymetricsmetrics=newdisplaymetrics (;

display display=activity.getwindow manager ().getDefaultDisplay;

display.getmetrics(metrics;

//这里获得的像素值是设备独立像素dp

//displaymetricsmetrics=activity.get resources ().getDisplayMetrics; 这样得到的参数信息不正确,所以请不要使用这个方式。

不能使用Android.content.RES.resources.get system ().getDisplayMetrics )。 这样可以得到的宽度和高度是空的。

如果需要为Android pad定制资源文件,则res目录下的目录将为:

可擦除

drawable-ldpi

drawable-mdpi

drawable-hdpi

drawable-xhdpi

drawable-nodpi

drawable-nodpi-1024600

drawable-nodpi-1280800

drawable-nodpi-800480

佛斯

values-ldpi

values-mdpi

values-hdpi

values-xhdpi

values-nodpi

values-nodpi-1024600

values-nodpi-1280800

values-nodpi-800480

参考:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。