用過iphone的朋友都知道,iPhone有個圓球輔助工具,它漂浮在你的手機屏幕(在任何APP之上),你可以將它移動到任何地方,它叫做AssistiveTouch,本篇模擬該軟件實現一個小案例,主要是實現它的界面,首先來看看實現的效果吧:
拖動小圓球:
點擊彈出pop窗口:
為了讓輔助工具一直懸浮在窗口之上,這裡使用的機制是通過在程序初始化是,啟動一個service,在service的onCreate() 函數中使用LayoutInflater來加載一個view,而這個view就是輔助球的布局文件:floatball.xml,然後對它進行onclick事件的監聽,setOnClickListener監聽到輔助球點擊事件之後,就創建一個PopupWindow,彈出如上的菜單界面,大體的實現就是這樣。
其實,實現窗口懸浮於最前面的一個重要屬性是:WindowManager.LayoutParams.TYPE_PHONE
我們只要將WindowManager.LayoutParams的type屬性設置為 WindowManager.LayoutParams.TYPE_PHONE就可以實現懸浮最前面。
工程目錄結構:
部分代碼解析:
MyApplication.java:
package com.tyd.floatball.util;
import Android.app.Application;
import android.view.WindowManager;
public class MyApplication extends Application {
private WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
public WindowManager.LayoutParams getMywmParams() {
return wmParams;
}
}