0

この質問への答えは私にはあまりにも進んでいるかもしれませんが、それでも試してみたいと思います。メソッド内で画面サイズの値を決定して設定することはできますが、そのメソッド外のスコープはありません。私の質問は、クラス全体の中でスコープを与えるにはどうすればよいですか?プロジェクト全体の中にも?ありがとう。これが私が画面サイズを決定するために使用しているものですが、それは単一のメソッド内でのみ機能します:

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

ありがとう!

4

3 に答える 3

1

私の質問は、クラス全体にスコープを与えるにはどうすればよいですか? プロジェクト全体でも?

これらの値を 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 タグに属性を設定します。

<application android:name="com.myname.MyApplication" ... ></application>

その後、any の結果をキャストして、メソッドを呼び出してgetApplication()呼び出すgetApplicationContext()ことができます。MyApplication例えば

int width = ((MyApplication) getApplication()).getWidth(); 

幅と高さの値は一度だけ初期化されるため、画面の向きが変わっても変更されないことに注意してください。それも考慮に入れたい場合は、コンテキストインスタンス(ActivityまたはなどService)を受け入れる単純な util メソッドがおそらくより簡単な解決策です。

public static Point getDimensions(Context context) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;
    return new Point(width, height);
}
于 2012-12-18T20:48:19.160 に答える
0

メソッドで結果を返すには、メソッドをパブリックにするか、任意の getter メソッドを使用できます。

于 2012-12-18T20:28:44.923 に答える
0

あなたのメソッドで と を宣言int widthint height、それらを必要として変更します。deferent メソッドからそれらにアクセスするには、次のように public として宣言するだけです。public int width

または、それらを非公開にする場合は、getter メソッドと setter メソッドを使用できます。

于 2012-12-18T21:26:45.130 に答える