在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;
clear
a=input('give me a number\n');
y=1;
for s=2:ceil(sqrt(a))
if mod(a,s)==0
y=0;
end
end
b=input('do you want to know if it is prime ','s');
if b=='y'
if y
disp('yes, it is');
else
disp('no, it is not ');
end
end
以上就是关于如何获取触摸屏某个区域内的dpi个数全部的内容,包括:如何获取触摸屏某个区域内的dpi个数、哪位好心人能帮忙写个简单的matlab程序 很着急 多谢!!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)