Android(安卓)获取屏幕宽度、高度、dpi等信息
16lz
2021-12-10
在Android中,关于屏幕的宽度、高度等的信息都封装在DisplayMetrics 类中,获取 DisplayMetrics 的方法以下几种:
不需要用到 context 的:
第一种:
DisplayMetrics metrics = new DisplayMetrics();WindowManager manager = (WindowManager) context.getSystemService(Service.WINDOW_SERVICE);if (manager != null) { manager.getDefaultDisplay().getMetrics(metrics);}
需要用到 context 的:
第二种:
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
第三种:
DisplayMetrics metrics = new DisplayMetrics();context.getDisplay().getMetrics(metrics);
第四种:与第三种的方式类似,通过ApplicationContext获取。
DisplayMetrics metrics = new DisplayMetrics();context.getApplicationContext().getDisplay().getMetrics(metrics);
拿到DisplayMetrics之后,就可以访问里面的属性了:
// 屏幕的逻辑密度,是密度无关像素(dip)的缩放因子,160dpi是系统屏幕显示的基线,1dip = 1px, 所以,在160dpi的屏幕上,density = 1, 而在一个120dpi屏幕上 density = 0.75。float density = metrics.density; // 屏幕的绝对宽度(像素)int screenWidth = metrics.widthPixels;// 屏幕的绝对高度(像素) int screenHeight = metrics.heightPixels; // 屏幕上字体显示的缩放因子,一般与density值相同,除非在程序运行中,用户根据喜好调整了显示字体的大小时,会有微小的增加。float scaledDensity = metrics.scaledDensity;// X轴方向上屏幕每英寸的物理像素数。float xdpi = metrics.xdpi; // Y轴方向上屏幕每英寸的物理像素数。float ydpi = metrics.ydpi; // 每英寸的像素点数,屏幕密度的另一种表示。densityDpi = density * 160.float desityDpi = metrics.densityDpi; ...
更多相关文章
- Android(安卓)获取屏幕高宽度,密度,通知栏高度,截图等常用方法
- Android图像处理_浮雕效果
- Android中设置屏幕全屏两种方法:
- [置顶] android 抽屉效果,内容GridView来实现单行滑动
- android camera(一):camera模组CMM介绍
- Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
- Android系统配置数据库注释(settings.db)
- android 分辨率及密度详细
- Android屏幕常亮