何らかの理由で、非アクティビティ拡張クラスで画面サイズを取得する必要があります。以下の方法を使用しようとしています:
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int w = metrics.widthPixels;
そのため、「w」をピクセル単位の幅寸法として使用できます。ただし、このメソッドはアクティビティを拡張したクラスのみのようです。解決策はありますか?
皆さんありがとう。
何らかの理由で、非アクティビティ拡張クラスで画面サイズを取得する必要があります。以下の方法を使用しようとしています:
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int w = metrics.widthPixels;
そのため、「w」をピクセル単位の幅寸法として使用できます。ただし、このメソッドはアクティビティを拡張したクラスのみのようです。解決策はありますか?
皆さんありがとう。
クラスのコンストラクターを介してコンテキストを渡す必要があります。
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;
}
}
必要なたび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
このようないくつかの一般的なロジックをグループ化して、残りのアクティビティによって拡張する必要があります。