我用这个:
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方法来设置上下文,并根据你的目的调用best方法像这样的代码,这段代码是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