- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发应用程序,它必须在所有设备上看起来都一样。问题是,如果设备有一个大分辨率屏幕(例如 1920x1080
并且密度可以说是 320
),那么所有元素看起来都会变小。
在 API 级别 17 及更高级别上,我可以使用此代码来更正问题:
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
android.content.res.Configuration config = context.getResources().getConfiguration();
config.densityDpi = <desired dpi goes here>;
context.getResources().updateConfiguration(config, displayMetrics);
但如果 API 级别较低,它会抛出异常 java.lang.NoSuchFieldError: android.content.res.Configuration.densityDpi
。
所以我没有更改配置中的 densityDpi,而是尝试了这个:
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
android.content.res.Configuration config = context.getResources().getConfiguration();
displayMetrics.densityDpi = <desired dpi goes here>;
context.getResources().updateConfiguration(config, displayMetrics);
但是这段代码根本没有效果:(。也许我用错了?请有人帮我解决这个问题。
更新:所以,没人知道这件事吗? :/
最佳答案
您只需像这样更新您的配置和显示指标。
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
Configuration config = context.getResources().getConfiguration();
displayMetrics.densityDpi = DisplayMetrics.DENSITY_LOW;
config.densityDpi = DisplayMetrics.DENSITY_LOW;
context.getResources().updateConfiguration(config, displayMetrics);
关于java - 更改 Android 中应用程序的 DisplayMetrics(API 级别低于 17),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20440099/
我想了解 DisplayMetrics.DENSITY_DEVICE_STABLE Android 上的属性。 来自 Android 10 兼容性定义(和 Android 7 兼容性定义): [C-0
有没有人注意到这个问题并解决了在两个方向上获得一致的绝对显示尺寸的方法? 示例,Nexus 5 (5.0.1): 纵向:宽度 = 1080 高度 = 1776 横向:宽度 = 1794 高度 = 10
我正在开发一个自定义类,以帮助调整其他类的布局大小。 这是类 public class LayoutResize{ Context context; DisplayMetrics di
我正在尝试访问一些 DisplayMetrics 数据,但一切都返回零。这就是我初始化显示指标对象的方式: DisplayMetrics display = new DisplayMetrics();
我想获取设备屏幕的 dpi,但是当我使用时: DisplayMetrics m = getResources().getDisplayMetrics();
我有两种不同的平板电脑: 10.1 英寸平板电脑 - 1280x800 @ ~149dpi 15.6 英寸平板电脑 - 1920x1080 @ ~156dpi 就实际物理(现实世界)规范而言,这些平板
我有一个 Samsung Galaxy S4 Active 当我在Android上执行时,如下代码: DisplayMetrics dm = new DisplayMetrics(); getWind
在 Debug模式下, metrics.xdpi 和 .ydpi 都返回 160。但是,我有一部 5"1920x1080 手机。我做错了什么? DisplayMetrics metrics =
我正在开发一个 Android 游戏(在 libgdx 中),但有一个问题:我需要获取设备的 dpi 以获得更好的游戏体验。所以我尝试使用 DisplayMetrics。 DisplayMetrics
小问题 DisplayMetrics.densityDpi 在 root 设备上似乎为零。 长题 我在我的应用中使用了以下代码: public static int getIconSize(Activ
我使用 displaymetrics 来获取设备的屏幕尺寸。在智能手机中效果很好,但在平板电脑中它返回屏幕宽度和高度的 2/3。谁能告诉我这是为什么? 这是代码: DisplayMetrics met
第一种方法: DisplayMetrics displayMetrics = this.getResources().getDisplayMetrics(); int deviceHeight = d
我有一个自定义 View ,我正在尝试针对不同的屏幕尺寸进行测试,但我无法找到有关如何在单元测试中正确模拟显示宽度的文档或示例。 这是我如何尝试使用它的示例: private CustomTextVi
我刚开始使用 Android 编程,但在以下代码中收到错误: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefau
我想了解 Android 中的 sp 单元,但我无法真正弄清楚它是如何工作的。 documentation说: sp Scale-independent Pixels - This is like t
获取 DisplayMetrics 的正确方法是什么,即获取屏幕/显示信息,例如 density 或 xdpi? 我问是因为我看到了两种解决方法: 第一: DisplayMetrics met
我试过这个...... DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().ge
我正在设计我的第一个 Android 应用程序,其中一部分需要获取屏幕尺寸。我以标准方式使用 DisplayMetrics 对象: DisplayMetrics metrics = new Displ
编辑 2 编辑 覆盖 attachBaseContext 方法以更新 Activity 中的上下文 protected override void AttachBaseContext(Context
我需要在 Android AppWidget 中确定运行时的屏幕密度。我已经设置了一个 HDPI 模拟器设备 (avd)。如果设置一个常规的可执行项目,并将此代码插入到 onCreate 方法中: D
我是一名优秀的程序员,十分优秀!