当前位置:首页 » 安卓系统 » android获取屏幕密度

android获取屏幕密度

发布时间: 2022-06-11 13:52:43

‘壹’ android 获取屏幕宽高与分辨率宽高是一回事吗

下面的代码即可获取屏幕的尺寸: 在一个Activity的onCreate方法中,编写以下代码: DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; // 宽度(PX) int height = metric.heightPixels; // 高度(PX) float density = metric.density; // 密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; // 密度DPI(120 / 160 / 240) 需要注意的是,在一个低密度的小屏手机上,仅靠上面的代码是不能获取正确的尺寸的。 所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens节点,如下: 这样当前的Android程序就支持了多种分辨率,那么就可以得到正确的物理尺寸了。

‘贰’ Android开发 怎样获取屏幕的宽高是多少厘米

我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸
下面的代码即可获取屏幕的尺寸。
在一个Activity的onCreate方法中,写入如下代码:

[java] view plain print?
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

但是,需要注意的是,在一个低密度的小屏手机上,仅靠上面的代码是不能获取正确的尺寸的。比如说,一部240x320像素的低密度手机,如果运行上述代码,获取到的屏幕尺寸是320x427。因此,研究之后发现,若没有设定多分辨率支持的话,Android系统会将240x320的低密度(120)尺寸转换为中等密度(160)对应的尺寸,这样的话就大大影响了程序的编码。所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens节点,具体的内容如下:
[html] view plain print?
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" />

<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" /> 这样的话,当前的Android程序就支持了多种分辨率,那么就可以得到正确的物理尺寸了。

[java] view plain print?
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TextView;
public class TextCanvasActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(new MyView(this));

//定义DisplayMetrics 对象
setContentView(R.layout.main);
DisplayMetrics dm = new DisplayMetrics();
//取得窗口属性
getWindowManager().getDefaultDisplay().getMetrics(dm);

//窗口的宽度
int screenWidth = dm.widthPixels;

//窗口高度
int screenHeight = dm.heightPixels;
TextView textView = (TextView)findViewById(R.id.tv1);
textView.setText("屏幕宽度: " + screenWidth + "\n屏幕高度: " + screenHeight);
}
}

‘叁’ android context.getResources().getDisplayMetrics().density 是什么意思啊

android context.getResources().getDisplayMetrics()这是获取手机屏幕参数,后面的density就是屏幕的密度,类似分辨率,但不是。看一下这个http://blog.csdn.net/feng88724/article/details/6599821

‘肆’ 怎样获取Android手机屏幕的大小

要获取手机屏幕大小,其实太简单,只要用尺量取屏幕对角尺寸(单位:mm)。然后用这个尺寸除以25.4,就得到英寸了。譬如:127mm/25.4=5.0 英寸。

‘伍’ android如何使用dip

我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼。
在Android中支持的描述大小区域的类型有以下几种。
px(pixels)——像素:不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
dip(device independent pixels)——设备独立像素:这个和设备硬件有关,一般哦我们为了支持WCGA、HVGA和QVGA推荐使用这个,不依赖于像素。等同于dp。
sp(scaled pixels—best for text size)——带比例的像素。
pt(points)——磅:1pt = 1/72英寸
in(inches)——英寸
mm(millimeters)——毫米
到底px和dip有什么区别呢?
dip != px
主要是针对不同设备而言的
在Density是160的设备上,比如用AVDManager创建的默认模拟器,dip和px是一样的
但是如果同样的代码,换到不同Density的设备上,比如换到一个Density是240的设备上,dip和px体现出来的大小就不一样了
px不管在什么样的设备上都是那样长,但是dip会根据设备变化

WQVGA屏density=120;QVGA屏density=120;HVGA屏density=160;WVGA屏density=240;

density值表示每英寸有多少个显示点,与分辨率是两个概念。

当屏幕density=240时使用hdpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位dip,少使用px

换算公式为 pixs = dips * (densityDpi/160).
dips=(pixs*160)/densityDpi
如何获得设备的屏幕分辨率和屏幕密度:
如分辨率为480*800,密度为240的设备
DisplayMetrics dm =getResources().getDisplayMetrics();
dm.densityDpi=240
dm.widthPixels=480
dm.heightPixels=800

‘陆’ 如何获取android:anyDensity值

android:anyDensity的意思是支持任意密度,这个值只是一个布尔值设置。是android自己匹配的。
android中,可以获取密度,根据密度自己如果有需要可以做特殊处理:
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

‘柒’ 如何获取android模拟器的高度和宽度

// 获取屏幕宽高(方法1)
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480px)
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p)
Log.e(TAG + " getDefaultDisplay", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 获取屏幕密度(方法2)
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
float xdpi = dm.xdpi;
float ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
screenWidth = dm.widthPixels; // 屏幕宽(像素,如:480px)
screenHeight = dm.heightPixels; // 屏幕高(像素,如:800px)
Log.e(TAG + " DisplayMetrics(111)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 获取屏幕密度(方法3)
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
xdpi = dm.xdpi;
ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
int screenWidthDip = dm.widthPixels; // 屏幕宽(dip,如:320dip)
int screenHeightDip = dm.heightPixels; // 屏幕宽(dip,如:533dip)
Log.e(TAG + " DisplayMetrics(222)", "screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip);
screenWidth = (int)(dm.widthPixels * density + 0.5f); // 屏幕宽(px,如:480px)
screenHeight = (int)(dm.heightPixels * density + 0.5f); // 屏幕高(px,如:800px)
Log.e(TAG + " DisplayMetrics(222)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);

‘捌’ 在 android 中,在屏幕密度为160时,1pt 大概等于多少sp

在 Android 中, 1pt 大概等于 2.22sp以上供参考,
与分辨率无关的度量单位可以解决这一问题。Android支持下列所有单位。
px(像素):屏幕上的点。
in(英寸):长度单位。
mm(毫米):长度单位。
pt(磅):1/72英寸。
dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。
dip:与dp相同,多用于android/ophone示例中。
sp(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
分辨率:整个屏是多少点,比如800x480,它是对于软件来说的显示单位,以px为单位的点。 density(密度)值表示每英寸有多少个显示点,与分辨率是两个概念。apk的资源包中,

当屏幕density=240时使用hdpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
一般android设置长度和宽度多用dip,设置字体大小多用sp. 在屏幕密度为160,1dp=1px=1dip, 1pt = 160/72 sp 1pt = 1/72 英寸.当屏幕密度为240时,1dp=1dip=1.5px.

‘玖’ 如何调整屏幕密度

1、确定手机的显示density和分辨率
desity翻译成中文的意思是密度,在安卓系统中,desity是一个重要的显示参数。如果density设置不当,如低分辨率用了高density,会使得字体和其他一些UI显示得特别小,甚至影响App兼容。要确定手机的density很简单,使用RE文件管理器,开启system目录下的build.prop,找到“ro.sif.lcd_density=”的参数,后面的数字就是当前的density。
软件名称: RE文件管理器(RootExplorer)
软件版本: 3.3.2
软件大小: 2.38MB
软件授权: 免费
适用平台: Android
下载地址: 一键下载 | 普通下载
找到build.prop文件,点击编辑
这一行就是目前的系统density,需要做修改
确定屏幕分辨率就更简单了,自行查询厂商官方数据即可。
2、根据分辨率修改density
前面说到,如果density不对,会造成很多问题,所以修改分辨率前,我们把density变更到对应的数值。以笔者的设备为例。笔者的设备默认分辨率是1080p(1920x1080),density为480。如果要把分辨率修改到720p(1280x720),那么就按照下面的方法计算出需要修改的density数值。
需要修改成的density数值=480/(1080/720)=320
1080p的横向、纵向分辨率是720p的1.5倍,所以density需要除以1.5。如果你是2K分辨率(2560x1440),想要修改成为1080p,那么同理,计算公式如下:
需要修改的density数值=原density数值/(1440/1080)
使用RE文件管理器,编辑build.prop。将“ro.sif.lcd_density=”的参数改写成为需要修改的数值,保存。
3、修改显示分辨率
修改density后,就可以接着修改显示分辨率了,这一步需要用到电脑,下面以Windows PC为例。首先需要安装安卓adb开发包,下载后,按照压缩包里的说明安装。
软件名称: adb工具包
软件版本: 1.0.32
软件大小: 608KB
软件授权: 免费
适用平台: Win2000 WinXP Win2003 Vista Win8 Win7

热点内容
javafor循环嵌套if 发布:2025-08-18 23:28:21 浏览:297
西装配领算法 发布:2025-08-18 23:26:38 浏览:497
ecshopsql漏洞 发布:2025-08-18 23:17:01 浏览:798
mac临时文件夹 发布:2025-08-18 23:14:55 浏览:765
阿里云搭建传奇服务器 发布:2025-08-18 23:14:06 浏览:452
硬件加密卡 发布:2025-08-18 23:08:17 浏览:986
农信交易密码指的是什么密码 发布:2025-08-18 23:03:20 浏览:584
数组存储空间 发布:2025-08-18 23:01:50 浏览:747
如解压游戏 发布:2025-08-18 22:57:02 浏览:576
如何复制页游密码 发布:2025-08-18 22:49:13 浏览:386