我的问题是,我如何在整个班级内给它范围?还在整个项目中?
如果您只想设置这些值一次,扩展Application
类可能是一个好的开始。
public class MyApplication extends Application {
private Point mDimensions;
@Override public void onCreate() {
// this will only get run on app startup
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
mDimensions = new Point(width, height);
}
public int getWidth() {
return mDimensions.x;
}
public int getHeight() {
return mDimensions.y;
}
}
要访问的getter方法,设置应用标签android:name
属性在项目的清单:
<application android:name="com.myname.MyApplication" ... ></application>
然后,您可以施放任何getApplication()
和getApplicationContext()
调用的结果MyApplication
并调用方法;例如
int width = ((MyApplication) getApplication()).getWidth();
请注意,由于宽度和高度值只初始化一次,他们将不变化屏幕方向的变化。如果您也想考虑这一点,则接受上下文实例的简单实用方法(可以是例如Activity
或Service
)可能是更直接的解决方案。
public static Point getDimensions(Context context) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
return new Point(width, height);
}
难道你不能只是在你的方法外声明'int width'和'int height',然后在你的方法内赋值它们的值吗? – jcw
我的目标只是申报变数一次,那么再也不用担心 – Evorlor
哦,我明白你的意思了。我想这应该工作。我应该自己想到这一点。谢谢!做出答案,以便我可以选中你 – Evorlor