Android(安卓)自定义UI--电池
16lz
2022-04-20
http://blog.csdn.net/wangjinyu501/article/details/19164655
http://blog.csdn.net/wangjinyu501/article/details/19164655
http://blog.csdn.net/wangjinyu501/article/details/19164655
http://blog.csdn.net/wangjinyu501/article/details/19164655
http://blog.csdn.net/wangjinyu501/article/details/19164655
Android 自定义UI--电池
分类:Android 2014-02-13 16:29 1176人阅读 评论(3) 收藏 举报首先看一下效果图,
下面看代码:
[html] view plain copy- /**
- *
- */
- packagecom.example.batterydemo;
- importandroid.content.Context;
- importandroid.graphics.Canvas;
- importandroid.graphics.Color;
- importandroid.graphics.Paint;
- importandroid.graphics.Paint.Style;
- importandroid.graphics.RectF;
- importandroid.util.AttributeSet;
- importandroid.view.View;
- /**
- *@authorkince
- *@category自定义View电池
- *@time2014.2.13
- *@qq543781062
- *
- */
- publicclassBatteryViewextendsView{
- /**
- *画笔信息
- */
- privatePaintmBatteryPaint;
- privatePaintmPowerPaint;
- privatefloatmBatteryStroke=2f;
- /**
- *屏幕高宽
- */
- privateintmeasureWidth;
- privateintmeasureHeigth;
- /**
- *
- *电池参数
- */
- privatefloatmBatteryHeight=30f;//电池的高度
- privatefloatmBatteryWidth=60f;//电池的宽度
- privatefloatmCapHeight=15f;
- privatefloatmCapWidth=5f;
- /**
- *
- *电池电量
- */
- privatefloatmPowerPadding=1;
- privatefloatmPowerHeight=mBatteryHeight-mBatteryStroke
- -mPowerPadding*2;//电池身体的高度
- privatefloatmPowerWidth=mBatteryWidth-mBatteryStroke-mPowerPadding
- *2;//电池身体的总宽度
- privatefloatmPower=0f;
- /**
- *
- *矩形
- */
- privateRectFmBatteryRect;
- privateRectFmCapRect;
- privateRectFmPowerRect;
- publicBatteryView(Contextcontext){
- super(context);
- initView();
- }
- publicBatteryView(Contextcontext,AttributeSetattrs){
- super(context,attrs);
- initView();
- }
- publicBatteryView(Contextcontext,AttributeSetattrs,intdefStyleAttr){
- super(context,attrs,defStyleAttr);
- initView();
- }
- publicvoidinitView(){
- /**
- *设置电池画笔
- */
- mBatteryPaint=newPaint();
- mBatteryPaint.setColor(Color.GRAY);
- mBatteryPaint.setAntiAlias(true);
- mBatteryPaint.setStyle(Style.STROKE);
- mBatteryPaint.setStrokeWidth(mBatteryStroke);
- /**
- *设置电量画笔
- */
- mPowerPaint=newPaint();
- mPowerPaint.setColor(Color.RED);
- mPowerPaint.setAntiAlias(true);
- mPowerPaint.setStyle(Style.FILL);
- mPowerPaint.setStrokeWidth(mBatteryStroke);
- /**
- *设置电池矩形
- */
- mBatteryRect=newRectF(mCapWidth,0,mBatteryWidth,mBatteryHeight);
- /**
- *设置电池盖矩形
- */
- mCapRect=newRectF(0,(mBatteryHeight-mCapHeight)/2,mCapWidth,
- (mBatteryHeight-mCapHeight)/2+mCapHeight);
- /**
- *设置电量矩形
- */
- mPowerRect=newRectF(mCapWidth+mBatteryStroke/2+mPowerPadding
- +mPowerWidth*((100f-mPower)/100f),//需要调整左边的位置
- mPowerPadding+mBatteryStroke/2,//需要考虑到画笔的宽度
- mBatteryWidth-mPowerPadding*2,mBatteryStroke/2
- +mPowerPadding+mPowerHeight);
- }
- @Override
- protectedvoidonDraw(Canvascanvas){
- super.onDraw(canvas);
- canvas.save();
- canvas.translate(measureWidth/2,measureHeigth/2);
- canvas.drawRoundRect(mBatteryRect,2f,2f,mBatteryPaint);//画电池轮廓需要考虑画笔的宽度
- canvas.drawRoundRect(mCapRect,2f,2f,mBatteryPaint);//画电池盖
- canvas.drawRect(mPowerRect,mPowerPaint);//画电量
- canvas.restore();
- }
- @Override
- protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){
- measureWidth=MeasureSpec.getSize(widthMeasureSpec);
- measureHeigth=MeasureSpec.getSize(heightMeasureSpec);
- setMeasuredDimension(measureWidth,measureHeigth);
- }
- /**]
- *@category设置电池电量
- *@parampower
- */
- publicvoidsetPower(floatpower){
- mPower=power;
- if(mPower<0){
- mPower=0;
- }
- mPowerRect=newRectF(mCapWidth+mBatteryStroke/2+mPowerPadding
- +mPowerWidth*((100f-mPower)/100f),//需要调整左边的位置
- mPowerPadding+mBatteryStroke/2,//需要考虑到画笔的宽度
- mBatteryWidth-mPowerPadding*2,mBatteryStroke/2
- +mPowerPadding+mPowerHeight);
- invalidate();
- }
- }
更多相关文章
- Android电池电量更新 - BatteryService
- Android(安卓)获取电池电量
- android典型代码系列(六)------drawable图片转换为48dip的bitmap
- android获取屏幕信息
- android 小米时钟的实现
- Android(安卓)获取手机的IMEI等设备信息
- Android(安卓)Dialog 使用 ConstraintLayout 约束布局宽度异常原
- Android之UI学习篇七:ImageView实现适屏和裁剪图片的功能
- Android实时绘制效果(二)