我需要使用 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/