如何在应用程序类中获取屏幕显示度量

35

如果我把这段代码放在某个活动类中,它就可以正常工作,但当我把它放在我的应用程序类中时,方法getWindowManager()就找不到了。有没有办法在应用程序类中获取WindowManager?

我的应用程序类定义如下:

public class myApp extends Application {

在 onCreate 方法中,我有以下代码:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int width = dm.widthPixels;
6个回答

74

这里是Context.getResources()

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

12

您也可以尝试这个:

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

3
希望这对您有用。
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
int pxWidth = displayMetrics.widthPixels;
int pxHeight = displayMetrics.heightPixels;

1
带上下文 -
context.resources.displayMetrics.widthPixels

不带上下文使用 -
Resources.getSystem().displayMetrics.widthPixels // but this doesn't work well on foldables

注意:在新的API中,getWindowManager().getDefaultDisplay().getMetrics(dm);返回void

0

试试这个:

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

3
在Application类中无法获取getWindowManager。 - Dmytro Danylyk
@NiteshKhosla 能否指出任何文件,显示Application类包含getWindowManager()方法?我在这里找不到:http://developer.android.com/reference/android/app/Application.html - rolgalan

-1
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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接