当前位置:  编程技术>移动开发

android 浏览器之多窗口方案详解

    来源: 互联网  发布时间:2014-10-20

    本文导语:  我们Android平台是一个又一个的Activity组成的,每一个Activity有一个或者多个View构成。所以说,当我们想显示一个界面的时候,我们首先想到的是建立一个Activity,然后所有的操作在Activity里面实现,或者是一个Dialog或者Toast。这...

我们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状态。

    
 
 

您可能感兴趣的文章:

  • 深入android Unable to resolve target 'android-XX'详解
  • Android工程:引用另一个Android工程的方法详解
  • Android TextView设置背景色与边框的方法详解
  • Android中的android:layout_weight使用详解
  • Android 实现永久保存数据的方法详解
  • 在android开发中尽量不要使用中文路径的问题详解
  • android开发环境搭建详解(eclipse + android sdk)
  • android双缓冲技术实例详解
  • 深入Android开发FAQ的详解
  • Android开发笔记之:一分钟学会使用Logcat调试程序的详解
  • Android对sdcard扩展卡文件操作实例详解
  • Android笔记之:onConfigurationChanged详解
  • Android 动画之AlphaAnimation应用详解
  • 解析后台进程对Android性能影响的详解
  • android ListView 一些重要属性详解
  • 解决Fedora14下eclipse进行android开发,ibus提示没有输入窗口的方法详解
  • Windows下获取Android 源码方法的详解
  • Android selector背景选择器的使用详解
  • Android 动画之RotateAnimation应用详解
  • Handler与Android多线程详解
  • Android 图片浏览器 雪梦图片浏览器
  • Android调用默认浏览器打开指定Url的方法实例
  • Android和IOS的浏览器中检测是否安装某个客户端的方法
  • android webview 简单浏览器实现代码
  • Android实现图片浏览器示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Android 的 CalDAV 解决方案 DAVdroid
  • android @override 报错解决方案
  • Android实现弹出登陆框的方案
  • android 下载时文件名是中文和空格会报错解决方案
  • Android程序退出完美解决方案兼容所有SDK
  • android横竖屏切换不重启activity解决方案
  • android2.3.5 CDMA/EVDO拨号APN解决方案
  • android 实现圆角图片解决方案
  • 在android中ScrollView嵌套ScrollView解决方案
  • android 微信 sdk api调用不成功解决方案
  • Android打开GPS导航并获取位置信息返回null解决方案
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android瀑布流实例 android_waterfall
  • Android开发需要的几点注意事项总结
  • Android系统自带样式 (android:theme)
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android网络共享软件 Android Wifi Tether
  • Android访问与手机通讯相关类的介绍
  • Android 图标库 Android GraphView
  • Android及andriod无线网络Wifi开发的几点注意事项
  • 轻量级Android开发工具 Android Tools
  • Android 2.3 下StrictMode介绍
  • Android 开发环境 Android Studio
  • IDEA的Android开发插件 idea-android
  • Android手机事件提醒 Android Notifier
  • XBMC的Android客户端 android-xbmcremote
  • Android小游戏 Android Shapes
  • Android电池监控 Android Battery Dog
  • android开发:“android:WindowTitle”没有对应项no resource
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • Android 将 android view 的位置设为右下角的解决方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3