2013-03-04 46 views
1

我使用这个:有没有办法让屏幕大小以dpi

int wi=getWindowManager().getDefaultDisplay().getWidth(); 

得到屏幕尺寸以像素为单位。有没有办法让屏幕尺寸在dpi

我正在根据屏幕大小选择不同的布局。

回答

3

有没有一种方法可以在dpi上获得escreen尺寸?

DisplayMetrics可以告诉你以像素为单位的屏幕大小加上屏幕密度。从那里,你可以计算出dp的屏幕尺寸。

我正在根据屏幕大小选择不同的布局。

这是你由资源框架自动处理的,如果你把你的布局在正确的目录中(例如,res/layout-large/res/layout-sw600dp/)。

0

“屏幕尺寸以dpi为单位”是无意义的陈述。你只想得到显示器的DPI?其次,不要这样做

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

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

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

DisplayMetrics metrics = new DisplayMetrics(); 
getWindow().getDisplayMetrics(metrics); 
int dpi = metrics.densityDpi; 
+0

嗨,是的我试图让屏幕尺寸为不同的布局。现在我有3个布局,并使用一个如果他们来决定什么样的布局加载,你能解释更多关于使用不同布局的文件夹,似乎更好,那么我在做什么 – 2013-03-05 12:52:19

+0

@Tedpottel检查[本页](http:///developer.android.com/guide/topics/resources/providing-resources.html),这将更详细地解释它。 – kcoppock 2013-03-05 17:36:37

0

这里是计算像素屏幕宽度和高度的方式。

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 
0

您必须创建度量对象,并做到以下

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方法上下文和调用最佳的方法与你的目的 这样的代码验证码is oncreate查看主要活动:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    LocalUtil.setContext(getApplicationContext()); 
    LocalUtil.getScreenWidthInDpi(); 
    //or call each method you want 
    } 
相关问题