Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有没有办法用dpi获得屏幕大小_Android_Measurement_Android Screen - Fatal编程技术网

Android 有没有办法用dpi获得屏幕大小

Android 有没有办法用dpi获得屏幕大小,android,measurement,android-screen,Android,Measurement,Android Screen,我用这个: int wi=getWindowManager().getDefaultDisplay().getWidth(); 以像素为单位获取屏幕大小。是否有办法在dpi中获取屏幕大小 我这样做是为了根据屏幕大小选择不同的布局 有没有办法获得dpi中的电子屏幕大小 DisplayMetrics可以告诉您屏幕大小(以像素为单位)以及屏幕密度。从那里,您可以在dp中计算屏幕大小 我这样做是为了根据屏幕大小选择不同的布局 如果您将版面放在适当的目录中(例如,res/layout large/,re

我用这个:

int wi=getWindowManager().getDefaultDisplay().getWidth();
以像素为单位获取屏幕大小。是否有办法在
dpi
中获取屏幕大小

我这样做是为了根据屏幕大小选择不同的布局

有没有办法获得dpi中的电子屏幕大小

DisplayMetrics
可以告诉您屏幕大小(以像素为单位)以及屏幕密度。从那里,您可以在
dp
中计算屏幕大小

我这样做是为了根据屏幕大小选择不同的布局

如果您将版面放在适当的目录中(例如,
res/layout large/
res/layout-sw600dp/
),资源框架会自动为您处理此问题

有没有办法获得dpi中的电子屏幕大小

DisplayMetrics
可以告诉您屏幕大小(以像素为单位)以及屏幕密度。从那里,您可以在
dp
中计算屏幕大小

我这样做是为了根据屏幕大小选择不同的布局

如果您将版面放在适当的目录中(例如,
res/layout large/
res/layout-sw600dp/
),资源框架会自动为您处理此问题。

dpi中的屏幕大小”是一个毫无意义的声明。您是否只想获取显示器的DPI

其次,不要这样做

说真的,停下来。不要这样做

按预期使用布局文件夹。如果您需要不同的HDPI布局,请将自定义布局放入
layout HDPI

也就是说,如果你只需要密度:

DisplayMetrics metrics = new DisplayMetrics();
getWindow().getDisplayMetrics(metrics);
int dpi = metrics.densityDpi;
“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

下面是一种以像素为单位计算屏幕宽度和高度的方法

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

您必须创建公制对象并执行以下操作

 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
  }

您必须创建公制对象并执行以下操作

 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
  }

嗨,是的,我正在尝试获取不同布局的屏幕大小。现在我有3个布局,使用if来决定要加载的布局,你能解释一下如何使用文件夹来加载不同的布局吗,看起来比我的更好doing@Tedpottel看看哪一个解释得更详细。嗨,是的,我正在尝试获取不同布局的屏幕大小。现在我有3个布局,使用if来决定要加载的布局,你能解释一下如何使用文件夹来加载不同的布局吗,看起来比我的更好doing@Tedpottel请查看更详细的解释。