我的問題是,我如何在整個班級內給它範圍?還在整個項目中?
如果您只想設置這些值一次,擴展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