Android 超炫的悬浮窗设计与实现方法,现在很多软件都有悬浮框功能,比如Facebook,体验效果极佳。其他不说,直接步入正题看看具体的实现吧。
Demo 代码下载地址:
------------------------------------------分割线------------------------------------------
FTP地址:ftp://ftp1.linuxidc.com
用户名:ftp1.linuxidc.com
密码:
在 2014年LinuxIDC.com\2月\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 来控制动画