天天看点

Adapter中用不了getWindowManager()方法怎么办?

Adapter中用不了getWindowManager()方法怎么办?

Adapter中用不了getWindowManager()这个问题遇到过两次了,还是记录一下吧。

android获取屏幕大小宽度的方法有好多种,

除了getWindowManager以外

// 通过WindowManager获取

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

System.out.println("heigth : " + dm.heightPixels);

System.out.println("width : " + dm.widthPixels);

还有好多种

// 通过Resources获取

DisplayMetrics dm2 = getResources().getDisplayMetrics();

System.out.println("heigth2 : " + dm2.heightPixels);

System.out.println("width2 : " + dm2.widthPixels);

// 获取屏幕的默认分辨率

Display display = getWindowManager().getDefaultDisplay();

System.out.println("width-display :" + display.getWidth());

System.out.println("heigth-display :" + display.getHeight());

但是为什么Activity中就可以用getWindowManager,Adapter中不可以呢?

因为getWindowManager()这个方法是在类Activity中的,如果你自己编写的类不是继承于类Activity,那么必然在这个类中书写代码就不能用到getWindowManager()这个方法。所以当你自己编写的类不是继承于类Activity,那么就只能应用第二种方法通过Resources获取获取手机屏幕的大小。

继续阅读