Android如何以编程方式确定我的应用程序使用的XML布局?

时间:2014-03-25 12:22:05

标签: java android layout android-xml

我希望能够记录应用程序所在的屏幕大小,以便我更容易获得适合不同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()返回空指针异常。任何人都有任何想法,为什么会这样?感谢

1 个答案:

答案 0 :(得分:2)

private LayoutSizeActivity layoutSize;
layoutSize = new LayoutSizeActivity();

您无法使用Activity创建new的实例。不要尝试,它永远不会工作。

您可以使用Activity或其中一种类似方法(例如startActivity(...)等)创建startActivityForResult(...)的唯一方法。

Activity class

Activities Guide

Application Fundamentals