CN105224337A - 一种桌面启动器动态添加浮动窗口方法 - Google Patents
一种桌面启动器动态添加浮动窗口方法 Download PDFInfo
- Publication number
- CN105224337A CN105224337A CN201510698943.0A CN201510698943A CN105224337A CN 105224337 A CN105224337 A CN 105224337A CN 201510698943 A CN201510698943 A CN 201510698943A CN 105224337 A CN105224337 A CN 105224337A
- Authority
- CN
- China
- Prior art keywords
- widget
- floating frame
- desktop starter
- floating
- desktop
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明公开了一种桌面启动器动态添加浮动窗口方法,包括有以下步骤:A、当用户从列表中拖拽出widget时,桌面启动器提供当前生成的widget的参数进行初始化;B、当用户将widget放置到桌面创建时,widget发送一个全局广播;C、桌面启动器中的接收器接收到广播后确认生成浮动窗口;D、桌面启动器启动时生成对应的浮动窗口,并处理浮动窗口触摸操作。本发明方法通过widget桌面创建时同时设置浮动窗口,并利用FloatService服务实现浮动窗口与widget同步移动,以及浮动窗口与widget对触屏操作进行分别并同步处理,从而完成安卓系统原生的AppWidget无法实现的复杂操作。本发明作为一种桌面启动器动态添加浮动窗口方法可广泛应用于数据处理领域。
Description
技术领域
本发明涉及数据处理领域,尤其是一种桌面启动器动态添加浮动窗口方法。
背景技术
往桌面启动器(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的触屏操作数据共享,不仅能实现浮动窗口中图标的移动、启动等操作,同时还能实现浮动窗口中应用程序内部数据的处理,例如在浮动窗口中的地图导航操作。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可以作出种种的等同变换或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (6)
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、判断上述浮动窗口截取的触摸操作数据为点击或长按操作,若为长按则由桌面启动器处理,若为点击则由浮动窗口内部处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510698943.0A CN105224337B (zh) | 2015-10-21 | 2015-10-21 | 一种桌面启动器动态添加浮动窗口方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510698943.0A CN105224337B (zh) | 2015-10-21 | 2015-10-21 | 一种桌面启动器动态添加浮动窗口方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105224337A true CN105224337A (zh) | 2016-01-06 |
CN105224337B CN105224337B (zh) | 2018-11-02 |
Family
ID=54993334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510698943.0A Active CN105224337B (zh) | 2015-10-21 | 2015-10-21 | 一种桌面启动器动态添加浮动窗口方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105224337B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700886A (zh) * | 2016-01-14 | 2016-06-22 | 腾讯科技(北京)有限公司 | 插件界面的显示方法及终端 |
CN106595003A (zh) * | 2017-01-22 | 2017-04-26 | 广东美的制冷设备有限公司 | 空气处理设备控制装置、方法和系统 |
WO2018133280A1 (zh) * | 2017-01-22 | 2018-07-26 | 广东美的制冷设备有限公司 | 空气处理设备控制装置、方法和系统 |
CN109614191A (zh) * | 2018-12-07 | 2019-04-12 | 上海商米科技有限公司 | 应用的处理方法及装置 |
CN109799945A (zh) * | 2018-12-24 | 2019-05-24 | 天津字节跳动科技有限公司 | 小程序长列表滚动显示方法、装置、电子设备及存储介质 |
CN113157468A (zh) * | 2021-05-24 | 2021-07-23 | 中兴通讯股份有限公司 | 跨进程信息处理方法、控制器、终端和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063134A (zh) * | 2014-07-03 | 2014-09-24 | 上海斐讯数据通信技术有限公司 | 一种Android Launcher桌面管理的方法 |
CN104572128A (zh) * | 2015-01-29 | 2015-04-29 | 深圳市英威诺科技有限公司 | 一种在桌面集成自定义全屏窗口小部件的技术方法 |
-
2015
- 2015-10-21 CN CN201510698943.0A patent/CN105224337B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063134A (zh) * | 2014-07-03 | 2014-09-24 | 上海斐讯数据通信技术有限公司 | 一种Android Launcher桌面管理的方法 |
CN104572128A (zh) * | 2015-01-29 | 2015-04-29 | 深圳市英威诺科技有限公司 | 一种在桌面集成自定义全屏窗口小部件的技术方法 |
Non-Patent Citations (1)
Title |
---|
STONECAO: "<AppWidget实现机制分析-Launcher添加和删除appwidget深入分析>", <HTTP://BLOG.CSDN.NET/STONECAO/ARTICLE/DETAILS/9858853> * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700886A (zh) * | 2016-01-14 | 2016-06-22 | 腾讯科技(北京)有限公司 | 插件界面的显示方法及终端 |
CN105700886B (zh) * | 2016-01-14 | 2019-02-26 | 腾讯科技(北京)有限公司 | 插件界面的显示方法及终端 |
CN106595003A (zh) * | 2017-01-22 | 2017-04-26 | 广东美的制冷设备有限公司 | 空气处理设备控制装置、方法和系统 |
WO2018133280A1 (zh) * | 2017-01-22 | 2018-07-26 | 广东美的制冷设备有限公司 | 空气处理设备控制装置、方法和系统 |
CN109614191A (zh) * | 2018-12-07 | 2019-04-12 | 上海商米科技有限公司 | 应用的处理方法及装置 |
CN109799945A (zh) * | 2018-12-24 | 2019-05-24 | 天津字节跳动科技有限公司 | 小程序长列表滚动显示方法、装置、电子设备及存储介质 |
CN113157468A (zh) * | 2021-05-24 | 2021-07-23 | 中兴通讯股份有限公司 | 跨进程信息处理方法、控制器、终端和存储介质 |
CN113157468B (zh) * | 2021-05-24 | 2023-08-29 | 中兴通讯股份有限公司 | 跨进程信息处理方法、控制器、终端和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105224337B (zh) | 2018-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105224337A (zh) | 一种桌面启动器动态添加浮动窗口方法 | |
US10635379B2 (en) | Method for sharing screen between devices and device using the same | |
US10990257B2 (en) | Object displaying method, terminal device, and computer storage medium | |
CN110691136B (zh) | 数据交互方法、装置、电子设备及存储介质 | |
CN107402733B (zh) | 用于合成图形数据的电子设备及其方法 | |
US9766904B2 (en) | Method for dynamically modifying application startup icon, message sending method and terminal | |
CN109240677A (zh) | 一种图层处理方法及装置 | |
CN109460233B (zh) | 页面的原生界面显示更新方法、装置、终端设备及介质 | |
KR102505478B1 (ko) | 플렉서블 디바이스 및 그 동작 방법 | |
WO2020038163A1 (zh) | 图标的显示方法、装置、终端及存储介质 | |
US10095386B2 (en) | Mobile device for displaying virtually listed pages and displaying method thereof | |
EP3686723A1 (en) | User terminal device providing user interaction and method therefor | |
KR101997776B1 (ko) | 디스플레이 장치의 소모 전력을 감소시키기 위한 방법 및 그 전자 장치 | |
CN102681853B (zh) | 一种利用OpenGL ES实现安卓操作系统桌面3D转屏的方法及装置 | |
CN104239071A (zh) | 一种基于通用组件和中转服务的跨平台移动应用开发框架系统 | |
WO2013178124A1 (zh) | 应用的快捷方式的处理方法及装置 | |
KR20150045121A (ko) | 멀티윈도우 운용 방법 및 이를 지원하는 전자 장치 | |
US11263997B2 (en) | Method for displaying screen image and electronic device therefor | |
WO2015184736A1 (zh) | 一种触屏设备背景图变换的方法及终端 | |
KR102586628B1 (ko) | 전자 장치 및 전자 장치의 메모리 관리 방법 | |
CN110019464B (zh) | 页面处理方法及装置 | |
CN107765773B (zh) | 一种显示信息的方法、装置、终端及存储介质 | |
US10691333B2 (en) | Method and apparatus for inputting character | |
CN107423291B (zh) | 一种数据翻译方法以及客户端设备 | |
US20120249545A1 (en) | User interface apparatus for providing representation of 3d theme for cover page and method of operating the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180918 Address after: 510000 Guangzhou, Guangzhou, Guangdong, Guangzhou, China, Guangzhou knowledge city nine Buddha 333 Jianshe Road 245 room Applicant after: Guangzhou Xiaopeng Automobile Technology Co. Ltd. Address before: 510006 room 429431, Guangdong University of Technology, science and Technology Museum, 100 West Valley Road, Panyu District, Guangzhou, Guangdong Applicant before: GUANGZHOU CHENGXING ZHIDONG AUTOMOBILE SCIENCE & TECHNOLOGY CO., LTD. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |