android - 如何在 Android 运行时根据 dp 或 dip 确定屏幕宽度?

标签 android density-independent-pixel

我需要使用 dip/dp(在 java 文件中)对 android 小部件的布局进行编码。如果我在运行时编码,

int pixel=this.getWindowManager().getDefaultDisplay().getWidth();

这会返回以像素 (px) 为单位的屏幕宽度。要将其转换为 dp,我编写了代码:

int dp =pixel/(int)getResources().getDisplayMetrics().density ;

这似乎没有返回正确的答案。我制作了 WVGA800 的模拟器,它的屏幕分辨率为 480 x 800。当运行模拟器并让代码打印像素和 dp 的值时,两者都达到了 320。该模拟器为 240 dpi,其比例因子为 0.75。

最佳答案

正如@Tomáš Hubálek 提到的那样;
尝试类似:

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();    
float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;

尝试旧答案:

Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics ();
display.getMetrics(outMetrics);
         
float density  = getResources().getDisplayMetrics().density;
float dpHeight = outMetrics.heightPixels / density;
float dpWidth  = outMetrics.widthPixels / density;

关于android - 如何在 Android 运行时根据 dp 或 dip 确定屏幕宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6465680/

相关文章:

android - 在 Android 中将 GridView 添加到 ListView

android - 如何识别编辑文本中的初始空格?

android - 您如何开始开发适用于多种设备尺寸/密度的 Android 应用程序?

java - 如何将像素转换为dp?

android - android如何在浏览器中处理px vs dp?

mobile - dp、dip、dpi、ppi、像素和英寸有什么关系?

android - 在 Android 中将 EditText 声明为 TextView

android - 如何在 Mono for Android 中创建动态菜单?

android - 从 Java 代码中指定 DIP 尺寸的正确方法是什么?

android - 在 Android 的横向模式中,对话框未全屏显示。