太阳城集团

  • / 9
  • 下载费用:30 金币  

一种桌面启动器动态添加浮动窗口方法.pdf

关 键 词:
一种 桌面 启动器 动态 添加 浮动 窗口 方法
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

太阳城集团CN201510698943.0

申请日:

2015.10.21

公开号:

太阳城集团CN105224337A

公开日:

2016.01.06

当前法律状态:

授权

有效性:

有权

法律详情: 授权|||专利申请权的转移IPC(主分类):G06F 9/451登记生效日:20180918变更事项:申请人变更前权利人:广州橙行智动汽车科技有限公司变更后权利人:广州小鹏汽车科技有限公司变更事项:地址变更前权利人:510006 广东省广州市番禺区小谷围街外环西路100号广东工业大学理学馆429,431房变更后权利人:510000 广东省广州市广州中新广州知识城九佛建设路333号245室|||实质审查的生效IPC(主分类):G06F 9/44申请日:20151021|||公开
IPC分类号: G06F9/44 主分类号: G06F9/44
申请人: 广州橙行智动汽车科技有限公司
发明人: 唐群勇; 林子鑫; 单文龙
地址: 510006 广东省广州市番禺区小谷围街外环西路100号广东工业大学理学馆429,431房
优先权:
专利代理机构: 广州嘉权专利商标事务所有限公司 44205 代理人: 胡辉
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201510698943.0

授权太阳城集团号:

|||||||||

法律状态太阳城集团日:

2018.11.02|||2018.10.12|||2016.02.03|||2016.01.06

法律状态类型:

授权|||专利申请权、专利权的转移|||实质审查的生效|||公开

摘要

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

权利要求书

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

2.  根据权利要求1所述的一种桌面启动器动态添加浮动窗口方法,其特征在于:所述步骤A中当前生成的widget的参数包括有窗口位置、大小、状态以及展示内容。

3.  根据权利要求1所述的一种桌面启动器动态添加浮动窗口方法,其特征在于:所述浮动窗口的视图通过FloatService服务进行管理。

4.  根据权利要求3所述的一种桌面启动器动态添加浮动窗口方法,其特征在于:所述FloatService服务通过桌面启动器获得widget的移动位置并不断刷新浮动窗口的视图位置,从而实现浮动窗口与widget同步移动。

5.  根据权利要求1所述的一种桌面启动器动态添加浮动窗口方法,其特征在于:所述步骤D中桌面启动器生成对应的浮动窗口的具体步骤为:
D1、在启动时对界面中的元素进行绑定;
D2、判断绑定的浮动窗口是否为对应的widget;
D3、若为对应的widget,则开始读取保存的窗口太阳城集团。

6.  根据权利要求5所述的一种桌面启动器动态添加浮动窗口方法,其特征在于:所述步骤D中处理浮动窗口触摸操作的具体步骤为:
D4、获取并识别触屏操作数据;
D5、判断触屏工作区是否在浮动窗口上面,若否则将触屏操作数据发送至桌面启动器处理,若是则由浮动窗口截取触摸操作数据;
D6、判断上述浮动窗口截取的触摸操作数据为点击或长按操作,若为长按则由桌面启动器处理,若为点击则由浮动窗口内部处理。

说明书

说明书一种桌面启动器动态添加浮动窗口方法
技术领域
本发明涉及数据处理领域,尤其是一种桌面启动器动态添加浮动窗口方法。
背景技术
往桌面启动器(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中桌面启动器生成对应的浮动窗口的具体步骤为:
D1、在启动时对界面中的元素进行绑定;
D2、判断绑定的浮动窗口是否为对应的widget;
D3、若为对应的widget,则开始读取保存的窗口太阳城集团。
进一步,所述步骤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的参数包括有窗口位置、大小、状态以及展示内容。
安卓系统中,WindowManager生成的窗口是系统层级的展示窗口,但仍需为其提供上下文Context以获取相关资源。WindowManager生成窗口需要提供两个参数:LayoutParams、View,前者为设置窗口位置、大小、状态,后者为展示内容。因此在生成浮动窗口时需要先初始化以上两个参数。
初始化过程参照下面代码段,首先调用WindowManager,并设置WindowManager.LayoutParams的相关属性,然后对展示内容进行初始化,其方法封装在FloatWindowsView类中:
/**
*根据标签对LayoutParams进行初始化
*paramTag
*/
publicvoidcreateParames(intTag){
wmParams=newLayoutParams();
//设置windowtype
wmParams.type=LayoutParams.TYPE_PHONE;
//设置图片格式,效果为背景透明
wmParams.format=PixelFormat.RGBA_8888;
//设置浮动窗口不可聚焦(实现操作除浮动窗口外的其他可见窗口的操作)
wmParams.flags=
LayoutParams.FLAG_NOT_FOCUSABLE
;
//调整悬浮窗显示的停靠位置
wmParams.gravity=Gravity.LEFT|Gravity.TOP;
wmParams.x=posiAWHs[Tag].x;
wmParams.y=posiAWHs[Tag].y;
//设置悬浮窗口长宽数据
wmParams.width=posiAWHs[Tag].width;
wmParams.height=posiAWHs[Tag].height;
}
/**
*应展示视图View的初始化
*/
publicvoidcreateFloatView(finalintmFloatTitleId,finalintmFloatWindowId)
{
LayoutInflaterinflater=LayoutInflater.from(context);
//获取浮动窗口视图所在布局
mFloatLayout=(LinearLayout)inflater.inflate(R.layout.myfloat_layout,null);
//添加mFloatLayout
wmParams.flags=
LayoutParams.FLAG_NOT_FOCUSABLE|
LayoutParams.FLAG_LAYOUT_NO_LIMITS;
wmParams.windowAnimations=R.anim.openanim;
//为WindowManager提供内容并生成窗口
mWindowManager.addView(mFloatLayout,wmParams);
}
进一步作为优选的实施方式,所述浮动窗口的视图通过FloatService服务进行管理。
进一步作为优选的实施方式,所述FloatService服务通过桌面启动器获得widget的移动位置并不断刷新浮动窗口的视图位置,从而实现浮动窗口与widget同步移动。
参照图2,所述FloatService服务在桌面启动器Launcher运行时始终存在,可实现对浮动窗口1的生成、替换和切换功能,并利用上述功能实现浮动窗口1的移动,即利用桌面启动器获得AppWidget2的移动位置,并利用FloatService服务将浮动窗口1的位置实时更新,具体实现方法如下:
首先,CellLayout中有getViewsIntersectingRegion函数,将在图标icon移动时频繁刷新,同时其参数中ArrayList<View>intersectingViews中,包含的是被覆盖的icon,在地图widget被覆盖要求拖动时,将会被加入到这个数集中;
然后在CellLayout构建一个接口用于传递widgetView的移动情况OnAppWidgetHostViewPosiChangeListener,并交由桌面启动器Launcher具体实现。当CellLayout中有AppWidget被动移动时,同时也需要确认所需的AppWidget的活动状况,具体实现可参照以下代码段:
if(intersectingViews.size()>=1){
for(Viewview:intersectingViews){
if(viewinstanceofLauncherAppWidgetHostView){if(((LauncherAppWidgetHostView)view).getAppWidgetInfo().provider.toString().equals("ComponentInfo{com.lin.floatmaptest/com.lin.floatmaptest.ExampleAppWidgetProvider}"))
{
if(appWidgetHostViewPosiChangeListener!=null)
appWidgetHostViewPosiChangeListener.moving(view.getX(),view.getY());
}
}
}
}
最后通过appWidgetHostViewPosiChangeListener这个接口将正确的AppWidget的活动情况反馈给FloatService服务,而FloatService服务的setPosition(floatx,floaty)方法将控制浮动窗口的位置,在不断刷新位置的情况下产生浮动窗口的移动效果。实现方式可参照以下两段代码段:
①savecellview.setOnAppWidgetHostViewPosiChangeListener(this);
②Override
publicvoidmoving(floatx,floaty){
floatService.setPosition(x,y);
}
参照图3,进一步作为优选的实施方式,所述步骤D中桌面启动器生成对应的浮动窗口的具体步骤为:
D1、在启动时对界面中的元素进行绑定;
桌面启动器Launcher启动时会对界面中的icon、AppWidget等元素进行绑定。
D2、判断绑定的浮动窗口是否为对应的widget,参照以下代码:
appWidgetInfo.provider.toString().equals("ComponentInfo{com.lin.floatmaptest/com.lin.floatmaptest.ExampleAppWidgetProvider}")
D3、若为对应的widget,则开始读取SharePreference保存的窗口太阳城集团;
上述SharePreference保存的太阳城集团在窗口初次生成时已经保存;根据存储的x,y,id等太阳城集团即完成浮动窗口的生成;具体可参照以下代码段:
Savecellview=(CellLayout)mWorkspace.getChildAt(2);
savecellview.setOnAppWidgetHostViewPosiChangeListener(this);
mSharedPreferences=getSharedPreferences("myown",Context.MODE_PRIVATE);
intid=mSharedPreferences.getInt("id",1000);
intx=mSharedPreferences.getInt("posix",10);
inty=mSharedPreferences.getInt("posiy",10);
参照图3,进一步作为优选的实施方式,所述步骤D中处理浮动窗口触摸操作的具体步骤为:
D4、获取并识别触屏操作数据;
D5、判断触屏工作区是否在浮动窗口上面,若否则将触屏操作数据发送至桌面启动器处理,若是则由浮动窗口截取触摸操作数据;
D6、判断上述浮动窗口截取的触摸操作数据为点击或长按操作,若为长按则由桌面启动器处理,若为点击则由浮动窗口内部处理。
参照上述处理步骤,本发明方法中先由浮动窗口处理触屏操作数据,并分享至桌面启动器Launcher;即通过ViewGroup中的dispatchTouchEvent(MotionEventev)获取浮动窗口的触摸事件MotionEvent,对数据不作截断,使浮动窗口处理完整的数据;同时将数据通过接口传递至桌面启动器Launcher,从而完成数据分享;然后又桌面启动器和浮动窗口内的AppWidget分别根据触屏操作数据完成自身的响应处理。上述步骤的实现通过重写自定义组件ViewGroup完成,由于浮动窗口和桌面启动器Launcher的触屏操作数据共享,不仅能实现浮动窗口中图标的移动、启动等操作,同时还能实现浮动窗口中应用程序内部数据的处理,例如在浮动窗口中的地图导航操作。
太阳城集团以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可以作出种种的等同变换或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

太阳城集团本文
本文标题:一种桌面启动器动态添加浮动窗口方法.pdf
链接地址:http://zh228.com/p-6397488.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');