我正在使用这个:
int wi=getWindowManager().getDefaultDisplay().getWidth();
以像素为单位获取屏幕大小。有没有办法让屏幕尺寸在dpi
???
我这样做是为了根据屏幕尺寸选择不同的布局。
我正在使用这个:
int wi=getWindowManager().getDefaultDisplay().getWidth();
以像素为单位获取屏幕大小。有没有办法让屏幕尺寸在dpi
???
我这样做是为了根据屏幕尺寸选择不同的布局。
有没有办法以 dpi 获得 escreen 大小???
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
}
这是一种以像素为单位计算屏幕宽度和高度的方法。
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
“以 dpi 为单位的屏幕尺寸”是一个毫无意义的陈述。你只是想获得显示器的DPI吗?
其次,不要这样做。
说真的,停下。不要这样做。
按预期使用布局文件夹。如果您需要 HDPI 的不同布局,请将您的自定义布局放入layout-hdpi
.
也就是说,如果您只需要密度:
DisplayMetrics metrics = new DisplayMetrics();
getWindow().getDisplayMetrics(metrics);
int dpi = metrics.densityDpi;