[英]Is there a way to get screen size in dpi
我正在使用这个:
int wi=getWindowManager().getDefaultDisplay().getWidth();
获取以像素为单位的屏幕尺寸。 有没有办法获得dpi
的屏幕尺寸?
我这样做是根据屏幕尺寸选择不同的布局。
有没有办法获得以dpi为单位的电子屏幕尺寸???
DisplayMetrics
可以告诉您屏幕大小(以像素为单位)以及屏幕密度。 从那里,您可以计算dp
的屏幕大小。
我这样做是根据屏幕尺寸选择不同的布局。
如果您将布局放在正确的目录中(例如res/layout-large/
, res/layout-sw600dp/
),那么资源框架会自动为您处理。
您必须创建指标对象并在下面执行
public class LocalUtil extends Application {
private static Context context1;
private static DisplayMetrics metrics;
public static void setContext(Context context)
{
context1=context;
metrics=context1.getResources().getDisplayMetrics();
}
public static float getDensity()
{
return metrics.density;
}
public static int getScreenWidth()
{
return metrics.widthPixels;
}
public static int getScreenHeight()
{
return metrics.heightPixels;
}
public static float getScreenWidthInDpi()
{
return metrics.widthPixels/metrics.density;
}
public static float getScreenHeightInDpi()
{
return metrics.heightPixels/metrics.density;
}
每个想要使用此方法的人都可以使用setcontext方法设置上下文,并根据您的目的调用最佳方法,例如此代码,此代码位于主要活动的oncreateView上:
@Override
protected void onCreate(Bundle savedInstanceState) {
LocalUtil.setContext(getApplicationContext());
LocalUtil.getScreenWidthInDpi();
//or call each method you want
}
“以dpi为单位的屏幕尺寸”是毫无意义的陈述。 您是否只想获取显示器的DPI?
其次, 不要这样做 。
认真一点,停下来。 不要这样
按预期使用布局文件夹。 如果您需要不同的HDPI布局,请将自定义布局放入layout-hdpi
。
就是说,如果您只需要密度:
DisplayMetrics metrics = new DisplayMetrics();
getWindow().getDisplayMetrics(metrics);
int dpi = metrics.densityDpi;
这是一种以像素为单位计算屏幕的宽度和高度的方法。
int widthPixels = getWindowManager().getDefaultDisplay().getWidth();
int heightPixels = getWindowManager().getDefaultDisplay().getHeight();
float scale = getApplicationContext().getResources().getDisplayMetrics().density;
int width = (int) (widthPixels - 0.5f)/scale; //width of screen in dpi
int height = (int) (heightPixels - 0.5f)/scale; //height of screen in dpi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.