我希望能够记录应用程序所在的屏幕大小,以便我更容易获得适合不同Android屏幕尺寸的布局。我使用以下代码实现了一个名为layoutSizeAcitivty的类:
public class LayoutSizeActivity extends SherlockActivity{
public void LayoutSize(){
//Determine screen size
if ((getResources().getConfiguration().screenLayout &Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE)
{
Log.d("Screen Size: ", "LARGE");
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
Log.d("Screen Size: ", "NORMAL");
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
Log.d("Screen Size: ", "SMALL");
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
Log.d("Screen Size: ", "XLARGE");
}
else {
Log.d("Screen Size: ","UNKNOWN_CATEGORY_SCREEN_SIZE");
}
//Determine density
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int density = metrics.densityDpi;
if (density==DisplayMetrics.DENSITY_HIGH) {
Log.d("Screen Density: ","HIGH");
}
else if (density==DisplayMetrics.DENSITY_MEDIUM) {
Log.d("Screen Density: ","MEDIUM");
}
else if (density==DisplayMetrics.DENSITY_LOW) {
Log.d("Screen Density: ","LOW");
}
else if (density==DisplayMetrics.DENSITY_XHIGH) {
Log.d("Screen Density: ","XHIGH");
}
else if (density==DisplayMetrics.DENSITY_XXHIGH) {
Log.d("Screen Density: ","XXHIGH");
}
else {
Log.d("Screen Density: ","UNKNOWN_CATEGORY");
}
}
}
然后在onCreate方法的第一个活动中,我添加了这个:
private LayoutSizeActivity layoutSize;
layoutSize = new LayoutSizeActivity();
layoutSize.LayoutSize();
由于某种原因,我的LayoutSizeActivity.LayoutSize()返回空指针异常。任何人都有任何想法,为什么会这样?感谢
答案 0 :(得分:2)
private LayoutSizeActivity layoutSize;
layoutSize = new LayoutSizeActivity();
您无法使用Activity
创建new
的实例。不要尝试,它永远不会工作。
您可以使用Activity
或其中一种类似方法(例如startActivity(...)
等)创建startActivityForResult(...)
的唯一方法。