Android 自定义UI--电池
来源:互联网 发布:目标软件 官网 编辑:程序博客网 时间:2024/04/29 10:39
首先看一下效果图,
下面看代码:
/** * */package com.example.batterydemo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.RectF;import android.util.AttributeSet;import android.view.View;/** * @author kince * @category 自定义View电池 * @time 2014.2.13 * @qq 543781062 * */public class BatteryView extends View {/** * 画笔信息 */private Paint mBatteryPaint;private Paint mPowerPaint;private float mBatteryStroke = 2f;/** * 屏幕高宽 */private int measureWidth;private int measureHeigth;/** * * 电池参数 */private float mBatteryHeight = 30f; // 电池的高度private float mBatteryWidth = 60f; // 电池的宽度private float mCapHeight = 15f;private float mCapWidth = 5f;/** * * 电池电量 */private float mPowerPadding = 1;private float mPowerHeight = mBatteryHeight - mBatteryStroke- mPowerPadding * 2; // 电池身体的高度private float mPowerWidth = mBatteryWidth - mBatteryStroke - mPowerPadding* 2;// 电池身体的总宽度private float mPower = 0f;/** * * 矩形 */private RectF mBatteryRect;private RectF mCapRect;private RectF mPowerRect;public BatteryView(Context context) {super(context);initView();}public BatteryView(Context context, AttributeSet attrs) {super(context, attrs);initView();}public BatteryView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initView();}public void initView() {/** * 设置电池画笔 */mBatteryPaint = new Paint();mBatteryPaint.setColor(Color.GRAY);mBatteryPaint.setAntiAlias(true);mBatteryPaint.setStyle(Style.STROKE);mBatteryPaint.setStrokeWidth(mBatteryStroke);/** * 设置电量画笔 */mPowerPaint = new Paint();mPowerPaint.setColor(Color.RED);mPowerPaint.setAntiAlias(true);mPowerPaint.setStyle(Style.FILL);mPowerPaint.setStrokeWidth(mBatteryStroke);/** * 设置电池矩形 */mBatteryRect = new RectF(mCapWidth, 0, mBatteryWidth, mBatteryHeight);/** * 设置电池盖矩形 */mCapRect = new RectF(0, (mBatteryHeight - mCapHeight) / 2, mCapWidth,(mBatteryHeight - mCapHeight) / 2 + mCapHeight);/** * 设置电量矩形 */mPowerRect = new RectF(mCapWidth + mBatteryStroke / 2 + mPowerPadding+ mPowerWidth * ((100f - mPower) / 100f), // 需要调整左边的位置mPowerPadding + mBatteryStroke / 2, // 需要考虑到 画笔的宽度mBatteryWidth - mPowerPadding * 2, mBatteryStroke / 2+ mPowerPadding + mPowerHeight);}@Overrideprotected void onDraw(Canvas canvas) {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();}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {measureWidth = MeasureSpec.getSize(widthMeasureSpec);measureHeigth = MeasureSpec.getSize(heightMeasureSpec);setMeasuredDimension(measureWidth, measureHeigth);}/**] * @category 设置电池电量 * @param power */public void setPower(float power) {mPower = power;if (mPower < 0) {mPower = 0;}mPowerRect = new RectF(mCapWidth + mBatteryStroke / 2 + mPowerPadding+ mPowerWidth * ((100f - mPower) / 100f), // 需要调整左边的位置mPowerPadding + mBatteryStroke / 2, // 需要考虑到 画笔的宽度mBatteryWidth - mPowerPadding * 2, mBatteryStroke / 2+ mPowerPadding + mPowerHeight);invalidate();}}代码已经注释得比较清楚了,大家自己看吧,不懂的方法可以去看一下api。
1 0
- Android 自定义UI--电池
- Android 自定义UI--电池
- Android 自定义UI--电池
- 自定义电池UI
- android自定义电池View
- Android自定义电池控件
- Android自定义电池控件
- Android SeekBar自定义UI
- Android 自定义UI
- android 自定义UI常用
- Android自定义UI
- Android自定义UI实例
- Android 自定义UI--指南针
- Android SeekBar自定义UI
- Android SeekBar自定义UI
- 初识android自定义UI
- android自定义UI组件
- android自定义notification UI
- IE浏览器,官网
- 混合推荐系统 类型
- 仅用移动开发服务:一分钱不花,开发native应用
- Linux动态库被多个process共享的情形
- uva - 11384 - Help is needed for Dexter(数学)
- Android 自定义UI--电池
- QNX的字符IO
- javaScript技巧收集
- awk用法
- QT的进程间通信
- 移植mplayer
- C++ CREATE FUNC的函数
- 善用google搜索,搜索引擎命令大全
- 在职场中那些扼杀你成长的工作态度