1,用途:
显示在界面底部提示后台的操作进度.比如下载进度.
2,原理:
(1)将提示界面以TYPE_SYSTEM_ALERT,TYPE_SYSTEM_OVERLAY的形式加入到WindowManager中,从而实现全局的悬浮窗口.
(2)创建一个Activity作为所有activity的基类,在onResume时显示悬浮窗口,在onPause里移除悬浮窗口.这样当应用退出或被其他应用覆盖时,悬浮窗口会消失,从而实现悬浮窗口被自己的应用拥有的效果.
3,不足:
界面切换时会出现短暂的消失.
4,代码简析:
主要的方法:
(1) public static FloatingBargetInstance(Context c)
本类被设计成单例模式,也就是只有一个实例,方便管理.
(2) protected void onDraw(Canvascanvas)
绘制界面
(3) public void show()
显示悬浮框
(4) public void dismiss()
隐藏悬浮框
(5) public static booleanneedFloatingBar()
是否要显示
5,截图
6,代码
import java.util.List;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.FontMetrics;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.util.Log;
import android.view.Gravity;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.TextView;
public class FloatingBar extends TextView
{
private final static String TAG = "FloatingBar";
private String mText;
private int mTextSize;
private int mBarHeight;
private int mBarWidth;
private int mIconPadding;
private Bitmap mIcon;
private static Context mContext;
private