1

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

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

所以我可以使用“w”作为像素的宽度尺寸。但是,似乎此方法仅适用于扩展活动的类。有什么解决办法吗?

谢谢大家。

4

2 回答 2

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;
    }
}
于 2013-09-28T16:06:50.433 回答
0

为了在每次需要时都不需要Activity传递方法来访问方法,在应用程序对象中保留对 currentActivity的引用很有用。-context

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通过我的其他活动来扩展,将一些常见的逻辑分组,比如这个。

于 2013-09-28T16:06:24.810 回答