1

何らかの理由で、非アクティビティ拡張クラスで画面サイズを取得する必要があります。以下の方法を使用しようとしています:

DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int w = metrics.widthPixels;

そのため、「w」をピクセル単位の幅寸法として使用できます。ただし、このメソッドはアクティビティを拡張したクラスのみのようです。解決策はありますか?

皆さんありがとう。

4

2 に答える 2

1

クラスのコンストラクターを介してコンテキストを渡す必要があります。

public class Something {

    Context context;

    public Something(Context context){
        this.context = context;
    }

    public int getDisplayWidth(){
        DisplayMetrics metrics = this.context.getResources().getDisplayMetrics();
        int w = metrics.widthPixels;
        return w;
    }
}
于 2013-09-28T16:06:50.433 に答える
0

必要なたびActivityに渡す必要なくメソッドにアクセスするには、アプリケーション オブジェクトでcurrentActivityへの参照を保持すると便利です。context

public class YourApplication extends Application {
    public YourApplication() {
        instance = this;        
    }

    public static YourApplication getInstance() {
        return instance;
    }

    public Activity getCurrentActivity() {
        return currentActivity;
    }

    public void setCurrentActivity(Activity currentActivity) {
        this.currentActivity = currentActivity;
    }
}

あなたのAndroidManifest.xml

<application
    android:name=".YourApplication"
    ...
    >
</application>

そしてあなたの方法でActivities onResume.-

@Override
protected void onResume() {
    super.onResume();

    YourApplication.getInstance().setCurrentActivity(this);
}

また、私は通常、ParentActivityこのようないくつかの一般的なロジックをグループ化して、残りのアクティビティによって拡張する必要があります。

于 2013-09-28T16:06:24.810 に答える