android浏览器之多窗口方案详细 android开发教程

  次阅读 作者:智能小宝 来源:互联网 2016-01-19 12:16 我要评论(0)

android 浏览器之多窗口方案详细介绍,需要的朋友可以过来参考下

我们Android平台是一个又一个的Activity组成的,每一个Activity有一个或者多个View构成。

所以说,当我们想显示 一个界面的时候,我们首先想到的是建立一个Activity,然后所有的操作在Activity里面实现,或者是一个Dialog或者Toast。这种方 式固然简单,但是在有些情况下,我们要求的只是简单的显示,用Activity显然是多余,这个时候,我们如何处理呢?

Android的一个应用在底层也是linux的一个进程,但在上层弱化了进程的概念,抽象出了Activity这样一种交互。代码直接控制的是 Activity,用户的交互也是Activity。

Activity是从用户交互的角度抽象出来的一个对象,在概念和使用上和进程相隔离。进程类似一个收养的功能,一个进程可以有多个Activity,不 仅可以收养自己当前应用的Activity,

也可以收养其他安装包指定给该进程的Activity,Activity销毁了,进程并不销毁(除非系统需要或代码强制杀死进程)。

原来,整个Android的窗口机制是基于一个叫做 WindowManager,这个接口可以添加view到屏幕,

也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略我们以前的Activity

或者Dialog之类的东东。其实我们的Activity或者Diolog底层的实现也是通过WindowManager,这个

WindowManager是全局的,整个系统就是这个唯一的东东。它是显示View的最底层了。

写一个简单的代码

Java代码

复制代码 代码如下:

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);

一般在刚开始开发android时,会犯一个错误,即在View的构造函数中获取getWidth()和getHeight(),

当一个view对象创建时,android并不知道其大小,所以getWidth()和getHeight()返回的结果是0,

真正大小是在计算布局时才会计算,所以会发现一个有趣的事,即在onDraw( ) 却能取得长宽的原因。

使用WindowManager实现悬浮窗口

复制代码 代码如下:

WindowManager.LayoutParams params;

params = new WindowManager.LayoutParams(

ViewGroup.LayoutParams.MATCH_PARENT,

ViewGroup.LayoutParams.WRAP_CONTENT,

WindowManager.LayoutParams.TYPE_PHONE,//TYPE_APPLICATION,

WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,

PixelFormat.TRANSLUCENT);

params.gravity = Gravity.TOP;

manager.addView(tmpView, params);

就可以将需要加到悬浮窗口中的View加入到窗口中了:

复制代码 代码如下:

if(view.getParent==null)//如果view没有被加入到某个父组件中,则加入WindowManager中

wManager.addView(view,wmParams);

其中,view为需要放到悬浮窗口中的视图组件。

如果要将其从WindowManager中移除,则可以执行以下语句:

复制代码 代码如下:

if(view.getParent()!=null)

wManager.removeView(view);

android中可按上面的方法增加多个窗口,多个窗口产生的问题:

2. 应用生命周期的问题

当其他应用出现在浏览器主Activity之前时,不论前面弹出了多少个浏览器的子窗口,浏览器的生命周期都进入onPause状态。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...