[Android 界面] WindowManager的使用
来源:互联网 发布:国威电话交换机编程 编辑:程序博客网 时间:2024/04/29 18:40
我们Android平台是一个又一个的Activity组成的,每一个Activity有一个或者多个View构成。所以说,当我们想显示一个界面的时候,我们首先想到的是建立一个Activity,然后所有的操作在Activity里面实现,或者是一个Dialog或者Toast。这种方式固然简单,但是在有些情况下,我们要求的只是简单的显示,用Activity显然是多余,这个时候,我们如何处理呢?
原来,整个Android的窗口机制是基于一个叫做WindowManager,这个接口可以添加view到屏幕,也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略我们以前的Activity或者Dialog之类的东东。其实我们的Activity或者Diolog底层的实现也是通过WindowManager,这个WindowManager是全局的,整个系统就是这个唯一的东东。它是显示View的最底层了。
写一个简单的代码:
WindowManager mWm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
Button view = new Button(this);
view.setText(“window manager test!”);
WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
mWm.addView(view, mParams);
我们这个button的显示和当前的运行环境基本上是无关的,当前是什么activity或者是桌面,使用这个底层的结果给你的编程带来很大的灵活性,但是要注意,显示出来就要销毁掉,这个是必须的,销毁其实就是一个remove。
但是仅仅这么写会有个问题,就是view显示在最上层,但是后面的view无法获得焦点,当你touch的坐标超出上次view的范围时
mParams = new WindowManager.LayoutParams();
mWm.updateViewLayout(view, mParams);
需要后面的view获得焦点时:
mParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWm.updateViewLayout(view, mParams);
- [Android 界面] WindowManager的使用
- [Android 界面] WindowManager的使用
- Android使用WindowManager在界面添加一个悬浮框
- Android界面生成流程:WindowManager和Window的关系
- Android中WindowManager类的使用
- android开发PopupWindow和WindowManager的使用
- Android WindowManager的API
- Android的WindowManager解析
- 使用Windowmanager给界面添加窗口
- WindowManager的使用
- WindowManager的使用
- WindowManager的使用
- WindowManager.LayoutParams的使用
- 安卓中WindowManager的使用
- Android中使用WindowManager在界面布局上添加浮动窗口
- Android使用WindowManager覆盖状态栏
- 【Android】使用WindowManager添加View
- Android WindowManager的使用 & 添加 遮罩层 实现夜间模式
- 5
- 向着第二层 第一阶段第二十一天
- 4
- 跑马灯 文字一行一行地向上滚动
- C/C++中参数传递有两种方式,传值或传地址(传引用)
- [Android 界面] WindowManager的使用
- [Android 界面]ListView性能优化之视图缓存
- [Android 界面]重画Progressbar的进度
- [Android 界面]Android TextSwitcher(文字交换器)的使用
- Goolge 爬虫改进中,我们需要改变SEO 策略
- openwrt固件备份与还原
- C++ Primer Plus 7.2
- JAVA反射与C#反射之比较
- 怎么样才能快速加分啊