一种桌面启动器动态添加浮动窗口方法技术

技术编号:12665152 阅读:93 留言:0更新日期:2016-01-07 02:49
本发明专利技术公开了一种桌面启动器动态添加浮动窗口方法,包括有以下步骤:A、当用户从列表中拖拽出widget时,桌面启动器提供当前生成的widget的参数进行初始化;B、当用户将widget放置到桌面创建时,widget发送一个全局广播;C、桌面启动器中的接收器接收到广播后确认生成浮动窗口;D、桌面启动器启动时生成对应的浮动窗口,并处理浮动窗口触摸操作。本发明专利技术方法通过widget桌面创建时同时设置浮动窗口,并利用FloatService服务实现浮动窗口与widget同步移动,以及浮动窗口与widget对触屏操作进行分别并同步处理,从而完成安卓系统原生的AppWidget无法实现的复杂操作。本发明专利技术作为一种桌面启动器动态添加浮动窗口方法可广泛应用于数据处理领域。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,尤其是。
技术介绍
往桌面启动器(Launcher)中添加部件,目前大部分是通过写AppWidget来实现的,Android系统最初面向的设备是低功耗的手持设备,必须考虑能耗和性能问题,在界面中添加多窗口和多任务处理势必加重设备负担,所以谷歌在设计AppWidget时对其性能及可使用性进行了极大的限制。因此通过这种方法编写的部件功能比较局限,不能进行复杂的数据处理,而且它所支持的布局控件有限,不支持自定义的控件。在构造Widget布局时,AppWidget支持的布局和控件非常有限。除此之外的所有控件(包括自定义控件)都无法显示,无法显示时,添加出来的Widget会显示“加载布局出错”。如果想要支持比较复杂的视图,例如将导航地图也通过部件的形式添加到桌面启动器Launcher中,并且通过该部件实现导航等复杂操作,仅靠Android原生的AppWidget是无法实现的。
技术实现思路
为了解决上述技术问题,本专利技术的目的是:提供一种通过在添加简单widget的同时在桌面启动器动态添加浮动窗口从而实现复杂功能部件的方法。本专利技术所采用的技术方案是:,包括有以下步骤: A、当用户从列表中拖拽出widget时,桌面启动器提供当前生成的widget的参数进行初始化; B、当用户将widget放置到桌面创建时,widget发送一个全局广播; C、桌面启动器中的接收器接收到广播后确认生成浮动窗口; D、桌面启动器启动时生成对应的浮动窗口,并处理浮动窗口触摸操作。进一步,所述步骤A中当前生成的widget的参数包括有窗口位置、大小、状态以及展示内容。进一步,所述浮动窗口的视图通过FloatService服务进行管理。进一步,所述FloatService服务通过桌面启动器获得widget的移动位置并不断刷新浮动窗口的视图位置,从而实现浮动窗口与widget同步移动。进一步,所述步骤D中桌面启动器生成对应的浮动窗口的具体步骤为: Dl、在启动时对界面中的元素进行绑定; D2、判断绑定的浮动窗口是否为对应的widget ; D3、若为对应的wi dget,则开始读取保存的窗口信息。进一步,所述步骤D中处理浮动窗口触摸操作的具体步骤为: D4、获取并识别触屏操作数据; D5、判断触屏工作区是否在浮动窗口上面,若否则将触屏操作数据发送至桌面启动器处理,若是则由浮动窗口截取触摸操作数据; D6、判断上述浮动窗口截取的触摸操作数据为点击或长按操作,若为长按则由桌面启动器处理,若为点击则由浮动窗口内部处理。本专利技术的有益效果是:本专利技术方法通过widget桌面创建时同时设置浮动窗口,并利用FloatService服务实现浮动窗口与widget同步移动,以及浮动窗口与widget对触屏操作进行分别并同步处理,从而完成安卓系统原生的AppWidget无法实现的复杂操作。【附图说明】图1为本专利技术方法总步骤流程图; 图2为本专利技术方法实现的浮动窗口示意图; 图3为本专利技术方法步骤D的具体步骤流程图。【具体实施方式】下面结合附图对本专利技术的【具体实施方式】作进一步说明: 参照图1,,包括有以下步骤: A、当用户从列表中拖拽出widget时,桌面启动器提供当前生成的widget的参数进行初始化; B、当用户将widget放置到桌面创建时,widget发送一个全局广播; C、桌面启动器中的接收器接收到广播后确认生成浮动窗口; 桌面启动器Launcher在已实现的接收器中接收广播,并在收到广播后设定标记,表示确认生成窗口。D、桌面启动器启动时生成对应的浮动窗口,并处理浮动窗口触摸操作。进一步作为优选的实施方式,所述步骤A中当前生成的widget的参数包括有窗口位置、大小、状态以及展示内容O安卓系统中,WindowManager生成的窗口是系统层级的展示窗口,但仍需为其提供上下文Context以获取相关资源。WindowManager生成窗口需要提供两个参数:LayoutParams、View,前者为设置窗口位置、大小、状态,后者为展示内容。因此在生成浮动窗口时需要先初始化以上两个参数。初始化过程参照下面代码段,首先调用WindowManager,并设置WindowManager.LayoutParams的相关属性,然后对展示内容进行初始化,其方法封装在FloatWindowsView类中: /林 *根据标签对LayoutParams进行初始化氺 Oparam Tag */ public void createParames(int Tag){ wmParams = new LayoutParams (); Il 设置 window typewmParams.type = LayoutParams.TYPE—PHONE;Il设置图片格式,效果为背景透明wmParams.format = PixelFormat.RGBA_8888;Il设置浮动窗口不可聚焦(实现操作除浮动窗口外的其他可见窗口的操作)wmParams.flags = LayoutParams.FLAG—NOT—FOCUSABLEjIl调整悬浮窗显示的停靠位置 wmParams.gravity = Gravity.LEFT | Gravity.TOP; wmParams.x = posiAWHs.x; wmParams.y = posiAWHs.y;Il设置悬浮窗口长宽数据 wmParams.width = posiAWHs.width; wmParams.height = posiAWHs.height;} /林 *应展示视图View的初始化 */ public void createFloatView(final int mFloatTitleld, final intmFloatffindowId){LayoutInflater inflater = LayoutInflater, from(context);Il获取浮动窗口视图所在布局mFloatLayout = (LinearLayout) inflater, inflate(R.layout.myfloat_layout, null); Il 添加 mFloatLayout wmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE LayoutParams.FLAG_LAYOUT_NO_LIMITS;wmParams.windowAnimat1ns = R.anim.0penanim; //为WindowManager提供内容并生成窗口mffindowManager.addView(mFloatLayout, wmParams);} 进一步作为优选的实施方式,所述浮动窗口的视图通过FloatService服务进行管理。进一步作为优选的实施方式,所述FloatService服务通过桌面启动器获得widget的移动位置并不断刷新浮动窗口的视图位置,从而实现浮动窗口与widget同步移动。参照图2,所述FloatService服务在桌面启动器Launcher运行时始终存在,可实现对浮动窗口 I的生成、本文档来自技高网...

【技术保护点】
一种桌面启动器动态添加浮动窗口方法,其特征在于:包括有以下步骤:A、当用户从列表中拖拽出widget时,桌面启动器提供当前生成的widget的参数进行初始化 ;B、当用户将widget放置到桌面创建时,widget发送一个全局广播;C、桌面启动器中的接收器接收到广播后确认生成浮动窗口;D、桌面启动器启动时生成对应的浮动窗口,并处理浮动窗口触摸操作。

【技术特征摘要】

【专利技术属性】
技术研发人员:唐群勇林子鑫单文龙
申请(专利权)人:广州橙行智动汽车科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1