我的问题是,我如何在整个班级内赋予它范围?也在整个项目里面?
如果您只想设置一次这些值,那么扩展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>
然后,您可以转换 any 的结果getApplication()
并getApplicationContext()
调用MyApplication
和调用方法;例如
int width = ((MyApplication) getApplication()).getWidth();
请注意,由于宽度和高度值仅初始化一次,因此它们不会在屏幕方向更改时更改。如果你也想考虑到这一点,一个简单的 util 方法接受一个上下文实例(可以是一个Activity
or 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);
}