参考下面的一段代码:
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是如何设置的呢?

解决方案 »

  1.   

    奇怪啊。我在我的android包里没找到WindowManagerImpl.java这个文件。
    我想应该是底层native方法改变的width和height把
      

  2.   


    在没有设置 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