文章标题
来源:互联网 发布:php 面相过程 编辑:程序博客网 时间:2024/06/05 00:21
Android 中 窗口:
- ViewImplement中w类 和 PhoneWindow有何关联
2.android 事件从哪里来,最后怎么分发到Activity里。
窗口究竟是什么,它有俩方面的含义,一方面是 android WMS (window Manager System)
对所有应用的界面窗口进行管理,并将各种触摸事件分发给相应的窗口,另一方面是代表
的样式,比如一个应用为了保证它所有的界面风格一致,或开发者为某个窗口设置特定的
风格样式。
创建一个window其实有俩个过程:
activityThread 创建activity后, activity.attach() – > 此时会
创建 new PhoneWindow()。并为之设置回调事件即activity,当有界面改变或者onContent()
会回调到activity然后在设置setContentView()时,会调用mWindow.setContentView,在这个方法内,它会生成
DecorView,并在DecorView内填充实际的layout,最后回调到activityPhoneWindow里
在activity的omResume – > setVisible方法里,makeVisible()会调用到getWindowManager() wm.addView()方法,
将该这个窗口通知给android WMS,让WMS可以随时派发到它。这个过程是
1 检查到addView() LayoutParams 的参数正确
2 新建 view,LayoutParams,new ViewRootImpl(view.getContext()) 并加入到管理队列中最后交给 session.addDisplay提交到WMS
所以从上面俩部分就可以看出 W类是ViewRootImpl内部的,WMS通过它分发事件。
而PhoneWindow则是代表前台界面元素,内部保存了自己的DecorView。
但它们联系紧密,共同发生作用。
wm.addView(mDecor,getWindwo().getAttributes());事件是如何派发到Activity里面来的?
1 在ViewRootImpl里 有 mInputHandle 处理从android管道发送过来的触摸信息。
然后sendMessage handleMessage 交给 deliverPointerEvent();2 然后 在deliverPointerEvent()里转给mView处理
3 此时如果View是DecorView,就将事件转发给它的CallBack – Activity
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- Fresco 源码解析 - 利用 @DoNotSkip 来防止混淆
- Java -- JavaBean,POJO,VO,DTO的区别和联系
- iOS-本地换肤思路
- linux基础目录结构
- 生成带有rgb值的pcd文件并显示
- 文章标题
- Android开发 如何快速实现分享功能
- Oracle V$SESSION详解
- Android开发技术学习之popupwindow的弹窗实现
- 实用知识:音乐播放的方法使用
- 虚拟机性能监控与故障处理工具
- 打开MySQL数据库远程访问的权限
- MySQL基础操作汇总
- 操作系统内存管理——分区、页式、段式管理