Android中可自由移動懸浮視窗的實現
本文為參加Google暑期大學生部落格分享大賽特別撰寫。
—————————————————————-
大家對懸浮窗概念不會陌生,相信每臺電腦桌面的右上角都會有這麼一個東西,它總是出現在所有頁面的頂端(Top Show)。但在Android平臺中如何實現這樣的效果呢?先來看一看效果圖。
看見在Google搜尋框上面的那個Icon圖片了嘛。下面我就來詳細介紹一下在Android平臺下懸浮視窗的實現,並讓它能夠隨手指的觸控而移動。
一、實現原理及移動思路
呼叫WindowManager,並設定WindowManager.LayoutParams的相關屬性,通過WindowManager的addView方法建立View,這樣產生出來的View根據WindowManager.LayoutParams屬性不同,效果也就不同了。比如建立系統頂級視窗,實現懸浮視窗效果!然後通過覆寫懸浮View中onTouchEvent方法來改變windowMananager.LayoutParams中x和y的值來實現自由移動懸浮視窗。
二、示例程式碼
先來看一看懸浮View的程式碼,這裡用一個ImageView作為演示
01 |
public class MyFloatView extends ImageView
{ |
02 |
private float mTouchStartX; |
03 |
private float mTouchStartY; |
04 |
private float x; |
05 |
private float y; |
06 |
07 |
private WindowManager
wm=(WindowManager)getContext().getApplicationContext().getSystemService( "window" ); |
08 |
//此wmParams變數為獲取的全域性變數,用以儲存懸浮視窗的屬性 |
09 |
private WindowManager.LayoutParams
wmParams = ((MyApplication)getContext().getApplicationContext()).getMywmParams(); |
10 |
11 |
public MyFloatView(Context
context) { |
12 |
super (context); |
13 |
|