Android 超炫的懸浮窗設計與實現方法,現在很多軟件都有懸浮框功能,比如Facebook,體驗效果極佳。其他不說,直接步入正題看看具體的實現吧。
Demo 代碼下載地址:
------------------------------------------分割線------------------------------------------
FTP地址:ftp://ftp1.linuxidc.com
用戶名:ftp1.linuxidc.com
密碼:www.linuxidc.com
在 2014年LinuxIDC.com\2月\Android 超炫的懸浮窗設計與實現
下載方法見 http://www.linuxidc.com/Linux/2013-10/91140.htm
------------------------------------------分割線------------------------------------------
一、效果圖:
二、實現知識點:
1. WindowManager
addView(View view, LayoutParams params) ,添加一個懸浮窗
updateViewLayout(View view, LayoutParams params),要使懸浮窗做出改變,需通過改變params的屬性,並調用此方法更新。
removeView()移除一個懸浮窗。
2. WindowManager.LayoutParams屬性的設置。
WindowManager.LayoutParams mParams=new WindowManager.LayoutParams();
mParams.type=WindowManager.LayoutParams.TYPE_PHONE;//懸浮窗的類型
mParams.format= PixelFormat.RGBA_8888; //效果為透明
mParams.flags=
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; //懸浮窗的行為,比如說不可聚焦,不可觸摸,全屏對等
mParams.width=100;//指定懸浮窗的寬度
mParams.height=100;//指定懸浮窗的高度。
mParams.gravity=Gravity.LEFT|Gravity.TOP; //懸浮窗的對齊方式
mParams.x=0; //懸浮窗的橫坐標
mParams.y=0;//懸浮窗的縱坐標
3. 其他一些動畫效果,通過重寫View或者使用 SurfaceView作為補間動畫。
public interface IAnimation
{
public abstract void onAnimStart();
public abstract void onAnimDraw(SurfaceHolder holder);
public abstract void onAnimEnd();
}
具體的動畫見com.open.tooltip.anim包下的具體實現類
4. 用Service 來控制動畫