Je souhaite utiliser getWindowManager () dans MainActivity, mais je ne souhaite pas écrire cette méthode directement dans celle-ci.
Voici mon code MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String d= new DisplayMessageActivity().getWeithAndHeight(d);
}
et voici mon code DisplayMessageActivity
public class DisplayMessageActivity extends Activity {
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
....
....
setContentView(textView);
}
public String getWeithAndHeight(String url) {
DisplayMetrics dm = new DisplayMetrics();
*getWindowManager().getDefaultDisplay().getMetrics(dm);*
int width = dm.widthPixels;
int height = dm.heightPixels;
String w=new String(""+width);
String h=new String(""+height);
url=url+"&23=w%3A"+w+"%20h%3A"+h+"%20d%3A";
return url;
}
}
mon code de rupture à getWindowManager (), s'il vous plaît dites-moi pourquoi. Merci beaucoup.
public String getWeithAndHeight(Context context, String url) {
DisplayMetrics dm = new DisplayMetrics();
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm);
//....
}
Pourquoi ne créez-vous pas une méthode statique?
public static String getWeithAndHeight(Activity activity, String url) {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
String w=new String(""+width);
String h=new String(""+height);
url=url+"&23=w%3A"+w+"%20h%3A"+h+"%20d%3A";
return url;
}
Votre DisplayMessageActivity n'est pas créé correctement. Vous ne pouvez pas simplement créer un nouvel objet d'activité pour utiliser toutes ses méthodes.
Il est bien trop tard pour le parti, en publiant la réponse, car une personne pourrait en bénéficier. vous pouvez obtenir WindowManager () comme référence statique en utilisant le contexte comme ceci .
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
if (windowManager != null) {
windowManager.getDefaultDisplay().getMetrics(displayMetrics);
}
maintenant vous pouvez utiliser la matrice d'affichage pour obtenir la largeur, la hauteur, etc.
Réponse de votre première question "Je souhaite utiliser getWindowManager () dans MainActivity, mais je ne souhaite pas écrire cette méthode directement dans celle-ci." Vous pouvez écrire BaseActivity extends Activity
& ici vous pouvez définir le code pour
public String getWeithAndHeight(Context context, String url) {
DisplayMetrics dm = new DisplayMetrics();
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm);
//....
}
Et pour DisplayMessageActivity & MainActivity, vous pouvez étendre avec BaseActivity.
Suivez deux étapes:
Premier:
étendre la classe d'activité
**class Example extends Activity
.....**
Seconde:
Utilisez le code ci-dessous:
**DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager windowmanager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
windowmanager.getDefaultDisplay().getMetrics(displayMetrics);
int deviceWidth = displayMetrics.widthPixels;
int deviceHeight = displayMetrics.heightPixels;**