使用WindowManager进行progress提示

来源:互联网 发布:网上邻居网络密码 编辑:程序博客网 时间:2024/05/17 02:05
package login;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.view.Gravity;import android.view.View;import android.view.WindowManager;import fusion.FusionField;/** *  * <一句话功能简述> *  * @author  0000005487 * @version  [版本号, 2012-8-3] * @see  [相关类/方法] * @since  [产品/模块版本] */public class ProgressTitleBar extends View{    private Context mContext;        private Paint mPaint;        private WindowManager mWindowManager;        private String mText;        private int mWidth;        private int mHeight;        private int curCount;        private int totalCount;        private int progressValue;        public ProgressTitleBar(Context context)    {        super(context);        this.mContext = context;        mWindowManager = (WindowManager)mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);        mPaint = new Paint();    }        public void addToWindow()    {        WindowManager.LayoutParams params = new WindowManager.LayoutParams();                params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;//        params.type = WindowManager.LayoutParams.FIRST_SUB_WINDOW;        params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;                params.width = FusionField.screenWidth != 0 ? FusionField.screenWidth : 1280;        params.height = 20;        params.alpha = 0.6f;                params.gravity = Gravity.LEFT | Gravity.BOTTOM;        //以屏幕左上角为原点,设置x、y初始值           params.x = 0;        params.y = mHeight;        mWindowManager.addView(this, params);    }        public void removeView()    {        mWindowManager.removeView(this);    }        @Override    protected void onDraw(Canvas canvas)    {        super.onDraw(canvas);        if (totalCount > 0)        {            canvas.drawColor(0x88000000);            if (progressValue > 0 && progressValue <= 100)            {                mPaint.setColor(0x8800FF00);                canvas.drawRect(0, 0, mWidth * (progressValue / 100f), mHeight, mPaint);            }            mPaint.setColor(0xFFFFFFFF);                        mPaint.measureText(mText);            canvas.drawText(mText, (mWidth - mPaint.measureText(mText)) / 2, 18, mPaint);        }    }        @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)    {        mWidth = FusionField.screenWidth != 0 ? FusionField.screenWidth : 1280;        mHeight = 20;        setMeasuredDimension(mWidth, mHeight);    }        public void setProgress(int cCount, int tCount, int pValue)    {        this.curCount = cCount < 0 ? 0 : cCount;        this.totalCount = tCount > curCount ? curCount : tCount;                mText = new StringBuffer("正在上传录像").append(curCount).append("/").append(totalCount).toString();                this.progressValue = pValue < 0 ? 0 : pValue > 100 ? 100 : pValue;        this.invalidate();    }    }

原创粉丝点击