关于横竖屏切换时,window的高和宽

pochuanpiao 2013-04-25 11:16:59
参考下面的一段代码:
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是如何设置的呢?
...全文
160 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlcw16 2013-04-25
  • 打赏
  • 举报
回复
奇怪啊。我在我的android包里没找到WindowManagerImpl.java这个文件。 我想应该是底层native方法改变的width和height把
csdn_2013 2013-04-25
  • 打赏
  • 举报
回复
引用 楼主 pochuanpiao 的回复:
参考下面的一段代码: WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display d = wm.getDefaultDisplay(); mScreenWidth = d.getWidth(); mScreenHeight = d.getHeight(); ……
在没有设置 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

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧