android WindowManager实现悬浮窗口

本文介绍了如何使用WindowManager在Android中实现全局悬浮窗口,详细讲解了其实现原理,包括利用TYPE_SYSTEM_ALERT和TYPE_SYSTEM_OVERLAY类型添加窗口,并在Activity的生命周期中控制悬浮窗口的显示与隐藏。此外,还提到了此方法的不足之处——界面切换时悬浮窗口可能出现短暂消失的问题。
摘要由CSDN通过智能技术生成

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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值