有没有办法得到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方法来设置上下文,并根据你的目的调用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

相关内容

  • 没有找到相关文章

最新更新