获取非活动扩展类(Android)中的屏幕尺寸

时间:2013-09-28 15:52:43

标签: android android-activity screen dimension

出于某种原因,我必须在非活动扩展类中获取屏幕尺寸。我尝试使用以下方法:

DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int w = metrics.widthPixels;

所以我可以使用“w”作为像素的宽度尺寸。但是,似乎这种方法仅适用于扩展活动的类。任何解决方案?

谢谢大家。

2 个答案:

答案 0 :(得分:1)

您必须通过类的构造函数传递上下文:

public class Something {

    Context context;

    public Something(Context context){
        this.context = context;
    }

    public int getDisplayWidth(){
        DisplayMetrics metrics = this.context.getResources().getDisplayMetrics();
        int w = metrics.widthPixels;
        return w;
    }
}

答案 1 :(得分:0)

为了访问Activity方法而无需在每次需要时传递context,在应用程序对象中保留对 currentActivity 的引用非常有用.-

public class YourApplication extends Application {
    public YourApplication() {
        instance = this;        
    }

    public static YourApplication getInstance() {
        return instance;
    }

    public Activity getCurrentActivity() {
        return currentActivity;
    }

    public void setCurrentActivity(Activity currentActivity) {
        this.currentActivity = currentActivity;
    }
}

AndroidManifest.xml

<application
    android:name=".YourApplication"
    ...
    >
</application>

并使用Activities onResume方法.-

@Override
protected void onResume() {
    super.onResume();

    YourApplication.getInstance().setCurrentActivity(this);
}

此外,我通常会在其余的活动中扩展ParentActivity,将一些常见逻辑分组。