午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種桌面啟動器動態(tài)添加浮動窗口方法

文檔序號:9471174閱讀:502來源:國知局
一種桌面啟動器動態(tài)添加浮動窗口方法
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領域,尤其是一種桌面啟動器動態(tài)添加浮動窗口方法。
【背景技術】
[0002]往桌面啟動器(Launcher)中添加部件,目前大部分是通過寫AppWidget來實現(xiàn)的,Android系統(tǒng)最初面向的設備是低功耗的手持設備,必須考慮能耗和性能問題,在界面中添加多窗口和多任務處理勢必加重設備負擔,所以谷歌在設計AppWidget時對其性能及可使用性進行了極大的限制。因此通過這種方法編寫的部件功能比較局限,不能進行復雜的數(shù)據(jù)處理,而且它所支持的布局控件有限,不支持自定義的控件。
[0003]在構造Widget布局時,AppWidget支持的布局和控件非常有限。除此之外的所有控件(包括自定義控件)都無法顯示,無法顯示時,添加出來的Widget會顯示“加載布局出錯”。如果想要支持比較復雜的視圖,例如將導航地圖也通過部件的形式添加到桌面啟動器Launcher中,并且通過該部件實現(xiàn)導航等復雜操作,僅靠Android原生的AppWidget是無法實現(xiàn)的。

【發(fā)明內容】

[0004]為了解決上述技術問題,本發(fā)明的目的是:提供一種通過在添加簡單widget的同時在桌面啟動器動態(tài)添加浮動窗口從而實現(xiàn)復雜功能部件的方法。
[0005]本發(fā)明所采用的技術方案是:一種桌面啟動器動態(tài)添加浮動窗口方法,包括有以下步驟:
A、當用戶從列表中拖拽出widget時,桌面啟動器提供當前生成的widget的參數(shù)進行初始化;
B、當用戶將widget放置到桌面創(chuàng)建時,widget發(fā)送一個全局廣播;
C、桌面啟動器中的接收器接收到廣播后確認生成浮動窗口;
D、桌面啟動器啟動時生成對應的浮動窗口,并處理浮動窗口觸摸操作。
[0006]進一步,所述步驟A中當前生成的widget的參數(shù)包括有窗口位置、大小、狀態(tài)以及展示內容。
[0007]進一步,所述浮動窗口的視圖通過FloatService服務進行管理。
[0008]進一步,所述FloatService服務通過桌面啟動器獲得widget的移動位置并不斷刷新浮動窗口的視圖位置,從而實現(xiàn)浮動窗口與widget同步移動。
[0009]進一步,所述步驟D中桌面啟動器生成對應的浮動窗口的具體步驟為:
Dl、在啟動時對界面中的元素進行綁定;
D2、判斷綁定的浮動窗口是否為對應的widget ;
D3、若為對應的wi dget,則開始讀取保存的窗口信息。
[0010]進一步,所述步驟D中處理浮動窗口觸摸操作的具體步驟為:
D4、獲取并識別觸屏操作數(shù)據(jù); D5、判斷觸屏工作區(qū)是否在浮動窗口上面,若否則將觸屏操作數(shù)據(jù)發(fā)送至桌面啟動器處理,若是則由浮動窗口截取觸摸操作數(shù)據(jù);
D6、判斷上述浮動窗口截取的觸摸操作數(shù)據(jù)為點擊或長按操作,若為長按則由桌面啟動器處理,若為點擊則由浮動窗口內部處理。
[0011]本發(fā)明的有益效果是:本發(fā)明方法通過widget桌面創(chuàng)建時同時設置浮動窗口,并利用FloatService服務實現(xiàn)浮動窗口與widget同步移動,以及浮動窗口與widget對觸屏操作進行分別并同步處理,從而完成安卓系統(tǒng)原生的AppWidget無法實現(xiàn)的復雜操作。
【附圖說明】
[0012]圖1為本發(fā)明方法總步驟流程圖;
圖2為本發(fā)明方法實現(xiàn)的浮動窗口示意圖;
圖3為本發(fā)明方法步驟D的具體步驟流程圖。
【具體實施方式】
[0013]下面結合附圖對本發(fā)明的【具體實施方式】作進一步說明:
參照圖1,一種桌面啟動器動態(tài)添加浮動窗口方法,包括有以下步驟:
A、當用戶從列表中拖拽出widget時,桌面啟動器提供當前生成的widget的參數(shù)進行初始化;
B、當用戶將widget放置到桌面創(chuàng)建時,widget發(fā)送一個全局廣播;
C、桌面啟動器中的接收器接收到廣播后確認生成浮動窗口;
桌面啟動器Launcher在已實現(xiàn)的接收器中接收廣播,并在收到廣播后設定標記,表示確認生成窗口。
[0014]D、桌面啟動器啟動時生成對應的浮動窗口,并處理浮動窗口觸摸操作。
[0015]進一步作為優(yōu)選的實施方式,所述步驟A中當前生成的widget的參數(shù)包括有窗口位置、大小、狀態(tài)以及展示內容O
[0016]安卓系統(tǒng)中,WindowManager生成的窗口是系統(tǒng)層級的展示窗口,但仍需為其提供上下文Context以獲取相關資源。WindowManager生成窗口需要提供兩個參數(shù):LayoutParams、View,前者為設置窗口位置、大小、狀態(tài),后者為展示內容。因此在生成浮動窗口時需要先初始化以上兩個參數(shù)。
[0017]初始化過程參照下面代碼段,首先調用WindowManager,并設置WindowManager.LayoutParams的相關屬性,然后對展示內容進行初始化,其方法封裝在FloatWindowsView類中:
/林
*根據(jù)標簽對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設置浮動窗口不可聚焦(實現(xiàn)操作除浮動窗口外的其他可見窗口的操作)wmParams.flags =
LayoutParams.FLAG—NOT—FOCUSABLE
j
Il調整懸浮窗顯示的??课恢?br> wmParams.gravity = Gravity.LEFT | Gravity.TOP; wmParams.x = posiAWHs[Tag].x; wmParams.y = posiAWHs[Tag].y;
Il設置懸浮窗口長寬數(shù)據(jù)
wmParams.width = posiAWHs[Tag].width;
wmParams.height = posiAWHs[Tag].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);
}
進一步作為優(yōu)選的實施方式,所述浮動窗口的視圖通過FloatService服務進行管理。
[0018]進一步作為優(yōu)選的實施方式,所述FloatService服務通過桌面啟動器獲得widget的移動位置并不斷刷新浮動窗口的視圖位置,從而實現(xiàn)浮動窗口與widget同步移動。
[0019]參照圖2,所述FloatService服務在桌面啟動器Launcher運行時始終存在,可實現(xiàn)對浮動窗口 I的生成、替換和切換功能,并利用上述功能實現(xiàn)浮動窗口 I的移動,即利用桌面啟動器獲得AppWidget 2的移動位置,并利用FloatService服務將浮動窗口 I的位置實時更新,具體實現(xiàn)方法如下:
首先,CellLayout中有getViewsIntersectingReg1n函數(shù),將在圖標icon移動時頻繁刷新,同時其參數(shù)中ArrayList〈View> intersectingViews中,包含的是被覆蓋的icon,在地圖widget被覆蓋要求
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1