2012-12-18 97 views
0

對於這個問題的答案可能對我來說太高級了,但我仍然想試一試。我能夠確定和設置方法中的屏幕尺寸值,但它沒有超出該方法的範圍。我的問題是,我如何在整個班級中把它放在範圍內?還在整個項目中?謝謝。這裏是我用什麼來確定屏幕尺寸,但它只能在單個方法中:確定屏幕尺寸 - Android Eclipse

DisplayMetrics metrics = this.getResources().getDisplayMetrics(); 
    int width = metrics.widthPixels; 
    int height = metrics.heightPixels; 

謝謝!

+1

難道你不能只是在你的方法外聲明'int width'和'int height',然後在你的方法內賦值它們的值嗎? – jcw

+0

我的目標只是申報變數一次,那麼再也不用擔心 – Evorlor

+0

哦,我明白你的意思了。我想這應該工作。我應該自己想到這一點。謝謝!做出答案,以便我可以選中你 – Evorlor

回答

1

我的問題是,我如何在整個班級內給它範圍?還在整個項目中?

如果您只想設置這些值一次,擴展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(); 

請注意,由於寬度和高度值只初始化一次,他們將變化屏幕方向的變化。如果您也想考慮這一點,則接受上下文實例的簡單實用方法(可以是例如ActivityService)可能是更直接的解決方案。

public static Point getDimensions(Context context) { 
    DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
    int width = metrics.widthPixels; 
    int height = metrics.heightPixels; 
    return new Point(width, height); 
} 
0

然後用方法返回結果,可以使該方法公開,或使用任何getter方法。

0

在方法聲明int widthint height,然後更改它們作爲nessecary。要使用不同的方法訪問它們,只需將它們聲明爲公共,如public int width

或者,如果您將其設置爲私有,那麼您可以使用getter和setter方法。