如何在android中通过编程获得屏幕密度?

我的意思是:如何找到当前设备的屏幕dpi?

推荐答案

您可以从DisplayMetrics struct 中获取有关显示的信息:

DisplayMetrics metrics = getResources().getDisplayMetrics();

虽然Android不使用直接像素映射,但它使用了少量量化的密度无关像素值,然后zoom 到实际屏幕大小.所以metrics.densityDpi属性将是DENSITY_xxx个常数(120160213240320480640 dpi)之一.

如果您需要actual个LCD像素密度(可能用于OpenGL应用程序),您可以分别从水平和垂直密度的metrics.xdpimetrics.ydpi属性中获得.

如果目标API级别早于4.metrics.density属性是参考密度(160dpi)的浮点比例因子.现在由metrics.densityDpi提供的相同的值可以被计算出来

int densityDpi = (int)(metrics.density * 160f);

Android相关问答推荐

在Android Studio中陷入了不兼容的Gradle版本的循环

在Android应用程序上使用Room数据库时,是否可以预先填充数据

如何go 除回调流中不可用的状态?

Yarn 机器人导致活动未找到,但Gradlew Run工作正常

如何在Android Jetpack Compose中找到我的手机屏幕一行有多少个单词

Android-交叉引用表中的ForeignKey用于什么?

如何在android库中关联应用程序链接?

Clean MVVM 架构中的 API 响应处理

Camera2 将图像从 ImageReader 传递到 MediaRecorder

是否可以在 Android 应用程序的 Wifi 设置中为 DNS 服务器设置自定义 IP?

在 compose 中做可变状态堆栈

来自位图的 WearOS 图标不显示 colored颜色

Jetpack Compose Arc 进度条动画(如何重启动画)

无法通过 retrofit 解析对 kotlin 数据类的 xml 响应

喷气背包组成影子奇怪的行为

为什么我不能直接记住 mutableStateOf 可组合函数?

无法使用 Gradle 托管设备对基线配置文件运行测试

Android WebView 没有在第一次页面完成时从本地存储读取数据?

如何获取 Android Preferences DataStore 的所有键

Android Jetpack Compose:如何让文本利用完整的行空间并将单词换行以防溢出?