博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义控件 --- 电池icon
阅读量:7027 次
发布时间:2019-06-28

本文共 3392 字,大约阅读时间需要 11 分钟。

效果图如上,下面直接上源码:

public class BatteryView extends View {    private int mMargin = 15;    //电池内芯与边框的距离    private int mBoder = 12;     //电池外框的宽带    private int mWidth = 210;    //总长    private int mHeight = 120;   //总高    private int mHeadWidth = 18;    //头部宽度    private int mHeadHeight = 30;   //头部高度    private RectF mMainRect;    //外边框    private RectF mHeadRect;    //头部边框    private float mRadius = 12f;   //圆角    private float mPower;    public BatteryView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        initView();    }    public BatteryView(Context context, AttributeSet attrs) {        super(context, attrs);        initView();    }    public BatteryView(Context context) {        super(context);        initView();    }    private void initView() {        mHeadRect = new RectF(mWidth - mHeadWidth, (mHeight - mHeadHeight)/2, mWidth, (mHeight + mHeadHeight)/2);        float left = mHeadRect.width();        float top = mBoder;        float right = mWidth - mHeadWidth;        float bottom = mHeight-mBoder;        mMainRect = new RectF(left, top, right, bottom);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        Paint paint1 = new Paint();        //画外框        paint1.setStyle(Paint.Style.STROKE);    //设置空心矩形        paint1.setStrokeWidth(mBoder);          //设置边框宽度        paint1.setColor(Color.parseColor("#ff0000"));        canvas.drawRoundRect(mMainRect, mRadius, mRadius, paint1);        //画电池头        paint1.setStyle(Paint.Style.FILL);  //实心        paint1.setColor(Color.parseColor("#00ff00"));        canvas.drawRect(mHeadRect, paint1);        //画电池芯        Paint paint = new Paint();        paint.setColor(Color.parseColor("#0000ff"));        int width   = (int) (mPower * (mMainRect.width() - mMargin*2));        int left   = (int) (mMainRect.left + mMargin);        int right    = (int) (mMainRect.left + mMargin + width);        int top     = (int) (mMainRect.top + mMargin);        int bottom  = (int) (mMainRect.bottom - mMargin);        Rect rect = new Rect(left,top,right, bottom);        canvas.drawRect(rect, paint);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        setMeasuredDimension(mWidth, mHeight);    }    public void setPower(float power) {        mPower = power;        invalidate();    }}复制代码

外部调用:

复制代码
private BatteryView batteryView;    private float power;    private Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what) {                case 0:                    batteryView.setPower(power += 0.1);                    if (power >= 1) {                        power = 0;                    }                    break;                default:                    break;            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        batteryView = (BatteryView) findViewById(R.id.id_batteryView);        batteryView.setPower(0.1f);        //模拟充电过程        new Timer().schedule(new TimerTask() {            @Override            public void run() {                mHandler.sendEmptyMessage(0);            }        }, 0, 100);    }}复制代码

转载地址:http://qjmxl.baihongyu.com/

你可能感兴趣的文章
phalcon 连接多个数据库 phalcon multi-database
查看>>
React Native(十一)——按钮重复点击事件的处理
查看>>
机器学习笔记(4):多类逻辑回归-使用gluton
查看>>
26.angularJS $routeProvider
查看>>
内存映射函数remap_pfn_range学习——示例分析(2)
查看>>
年轻的工程师如何月入伍万XD
查看>>
NAT64与DNS64基本原理概述
查看>>
Java-Shiro(四):Shiro
查看>>
Oracle 备份、恢复单表或多表数据步骤
查看>>
ubuntu 步步为营之uclinux编译和移植(完整版)
查看>>
Lintcode: Partition Array
查看>>
sudo 之后 unable to resolve host的问题解决办法
查看>>
那些PHP中没有全称的简写
查看>>
【elasticsearch】python下的使用
查看>>
python字符串和编码
查看>>
JS实现表单多文件上传样式美化支持选中文件后删除相关项
查看>>
高可用高并发常用到的9种技术
查看>>
数字签名
查看>>
SQL Server数据库中批量替换数据的方法
查看>>
QTP 浏览器最大化、最小化,适用于IE6\7\8
查看>>