Android 超炫的悬浮窗设计与实现

Android 超炫的悬浮窗设计与实现方法,现在很多软件都有悬浮框功能,比如Facebook,体验效果极佳。其他不说,直接步入正题看看具体的实现吧。

Demo 代码下载地址:

------------------------------------------分割线------------------------------------------

------------------------------------------分割线------------------------------------------

一、效果图:

Android 超炫的悬浮窗设计与实现Android 超炫的悬浮窗设计与实现

二、实现知识点:

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 来控制动画