参考下面的一段代码:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display d = wm.getDefaultDisplay();
mScreenWidth = d.getWidth();
mScreenHeight = d.getHeight(); 当横竖屏切换的时候mScreenWidth 和mScreenHeight 的值是会跟着一起变化的。跟踪代码发现:
getDefaultDisplay()的实现在WindowManagerImpl.java
但是,并没有找到有重新设置width和height的地方。想问下:
当横竖屏切换的时候,这个window的width和height是如何设置的呢?
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display d = wm.getDefaultDisplay();
mScreenWidth = d.getWidth();
mScreenHeight = d.getHeight(); 当横竖屏切换的时候mScreenWidth 和mScreenHeight 的值是会跟着一起变化的。跟踪代码发现:
getDefaultDisplay()的实现在WindowManagerImpl.java
但是,并没有找到有重新设置width和height的地方。想问下:
当横竖屏切换的时候,这个window的width和height是如何设置的呢?
解决方案 »
- Android手机中的程序文件夹拷贝到别的Android手机上还能用么?
- 关于graphical layout 效果显示不出来的问题。,求解。!!!
- 如何把GUID放入一个16位的二进制上。又如何读取一个16位的二进制回GUID
- 如何学习Android的应用框架?
- 使用NDK可以调用底层函数吗
- listview 平滑移动问题
- SimpleCursorAdapter 报错求各位帮忙看下
- 怎样将Andorid.mk中的变量传入Java程序 类似C语言通过gcc -D传入预定义宏
- 后台运行成功,但是安卓模拟器显示不完全
- 大神们,请教下这是内存溢出的问题吗
- 新建Android application project包文件出现灰色
- 开发一个多功能android视频播放器需要设计哪些数据库表
我想应该是底层native方法改变的width和height把
在没有设置 android:configChanges="keyboardHidden|orientation|screenSize" 属性时,
当横竖屏切换的时候 会重新执行onCreate方法 在设置android:configChanges="keyboardHidden|orientation|screenSize"属性时,
当横竖屏切换的时候 不会执行onCreate方法,而会执行onConfigurationChanged
而在WindowManagerImpl.java 的getDefaultDisplay()方法中我们可以看到 每次被调用的时候
public Display getDefaultDisplay() {
return new Display(Display.DEFAULT_DISPLAY, null);
}
它都会返回 重新new 的Display的实例而Disoay