Как получить показатели отображения экрана в классе приложения

Если я помещу это в какой-то класс активности, он будет работать отлично, но, когда я помещу это в мой класс приложения, метод getWindowManager() не может быть найден. Есть ли способ получить WindowManager в классе приложения?

Мой класс приложения определяется так:

public class myApp extends Application {

и в методе создания у меня есть это:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int width = dm.widthPixels;

4 ответа

Решение

Здесь Context.getResource()

DisplayMetrics dm = getResources().getDisplayMetrics(); 
int densityDpi = dm.densityDpi;

Вы также можете попробовать это:

WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
final DisplayMetrics displayMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;

hope this will work for you

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
int pxWidth = displayMetrics.widthPixels;
int pxHeight = displayMetrics.heightPixels;

Попробуй это:

Display display = getWindowManager().getDefaultDisplay();
Log.e("", "" + display.getHeight() + " " + display.getWidth());

Без использования контекста -

Resources.getSystem().displayMetrics.widthPixels

С контекстом -

context?.resources?.displayMetrics?.widthPixels

Заметка: getWindowManager().getDefaultDisplay().getMetrics(dm); возвращается void в новом API.

final DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

int width = dm.widthPixels;
int height = dm.heightPixels;

getWindow().setLayout((int) (width * .8), (int) (height * .5));
Другие вопросы по тегам