出于某种原因,我必须在非活动扩展类中获取屏幕尺寸。我尝试使用以下方法:
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int w = metrics.widthPixels;
所以我可以使用“w”作为像素的宽度尺寸。但是,似乎此方法仅适用于扩展活动的类。有什么解决办法吗?
谢谢大家。
出于某种原因,我必须在非活动扩展类中获取屏幕尺寸。我尝试使用以下方法:
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int w = metrics.widthPixels;
所以我可以使用“w”作为像素的宽度尺寸。但是,似乎此方法仅适用于扩展活动的类。有什么解决办法吗?
谢谢大家。
您必须通过类的构造函数传入上下文:
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;
}
}
为了在每次需要时都不需要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
通过我的其他活动来扩展,将一些常见的逻辑分组,比如这个。