在Android中,关于屏幕的宽度、高度等的信息都封装在DisplayMetrics 类中,获取 DisplayMetrics 的方法以下几种:
不需要用到 context 的:
第一种:
DisplayMetrics metrics = new DisplayMetrics();
WindowManager manager = (WindowManager) contextgetSystemService(ServiceWINDOW_SERVICE);
if (manager != null) {
managergetDefaultDisplay()getMetrics(metrics);
}
需要用到 context 的:
第二种:
DisplayMetrics metrics = contextgetResources()getDisplayMetrics();
第三种:
DisplayMetrics metrics = new DisplayMetrics();
contextgetDisplay()getMetrics(metrics);
第四种:与第三种的方式类似,通过ApplicationContext获取。
DisplayMetrics metrics = new DisplayMetrics();
contextgetApplicationContext()getDisplay()getMetrics(metrics);
拿到DisplayMetrics之后,就可以访问里面的属性了:
// 屏幕的逻辑密度,是密度无关像素(dip)的缩放因子,160dpi是系统屏幕显示的基线,1dip = 1px, 所以,在160dpi的屏幕上,density = 1, 而在一个120dpi屏幕上 density = 075。
float density = metricsdensity;
// 屏幕的绝对宽度(像素)
int screenWidth = metricswidthPixels;
// 屏幕的绝对高度(像素)
int screenHeight = metricsheightPixels;
// 屏幕上字体显示的缩放因子,一般与density值相同,除非在程序运行中,用户根据喜好调整了显示字体的大小时,会有微小的增加。
float scaledDensity = metricsscaledDensity;
// X轴方向上屏幕每英寸的物理像素数。
float xdpi = metricsxdpi;
// Y轴方向上屏幕每英寸的物理像素数。
float ydpi = metricsydpi;
// 每英寸的像素点数,屏幕密度的另一种表示。densityDpi = density 160
float desityDpi = metricsdensityDpi;
'CommandBotton一个Picture控件一个
'把picture1的AutoSize属性设为True
'用Picture里装载那张你需要的
'然后
Private Sub Command1_Click()
i = MsgBox("的分辨率为:" + Str(Picture1ScaleWidth / 15) + "X" + Str(Picture1ScaleHeight / 15))
End Sub
DPI和PPI是两个不同的概念。LZ算的是PPI
ppi (pixels per inch):图像的采样率(在图像中,每英寸所包含的像素数目)
dpi (dots per inch):打印分辨率 (每英寸所能打印的点数,即打印精度)
ppi和dpi确实是两个概念,但是有些事情是约定成俗的,的ppi无法反映这张能在冲印店得到的冲印质量,不如你去店里试试看,你问问 *** 作员你的是72ppi会得到什么样的冲印质量,多数 *** 作员会一头雾水。在冲印店里只用dpi,因为我们拿去的必定是为了输出成照片,对于 *** 作人员,他要知道的就是你的像素和你所需要印制的尺寸,这两个要素构成了dpi,所以尽管不规范,对于需要冲印的我们只有用dpi的大小来沟通。
HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetric\AppliedDPI 直接读取注册表应该可以,这是win7的,windows phone如何不知道
以上就是关于如何获取触摸屏某个区域内的dpi个数全部的内容,包括:如何获取触摸屏某个区域内的dpi个数、vb 编程 如何获取图片文件的DPI(分辨率) 值、安卓手机DPI是如何计算的安卓开发中有什么方法可以获得手机屏幕尺寸(英寸)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)