Android电量图标实现
来源:互联网 发布:oracle 删除数据库 编辑:程序博客网 时间:2024/05/10 04:26
最近实现了一个显示系统电量View,外部调用不需要任何控制。简单添加View就可使用。 思路很简单,通过监听Intent.ACTION_BATTERY_CHANGED)获取系统电量。用Canvas画出电池框和电池芯。 实现了三种状态: 1.未充电时,显示白色 2.电量小于10%,显示红色 3.充电状态,显示绿色
实现效果:
代码如下:
github地址
public class BatteryView extends View { private int mMargin = 5; //电池内芯与边框的距离 private int mBoder = 4; //电池外框的宽带 private int mWidth = 70; //总长 private int mHeight = 40; //总高 private int mHeadWidth = 6; private int mHeadHeight = 10; private RectF mMainRect; private RectF mHeadRect; private float mRadius = 4f; //圆角 private float mPower; private boolean mIsCharging; //是否在充电 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(0, (mHeight - mHeadHeight)/2, mHeadWidth, (mHeight + mHeadHeight)/2); float left = mHeadRect.width(); float top = mBoder; float right = mWidth-mBoder; 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.FILL); //实心 paint1.setColor(Color.WHITE); canvas.drawRect(mHeadRect, paint1); //画外框 paint1.setStyle(Paint.Style.STROKE); //设置空心矩形 paint1.setStrokeWidth(mBoder); //设置边框宽度 paint1.setColor(Color.WHITE); canvas.drawRoundRect(mMainRect, mRadius, mRadius, paint1); //画电池芯 Paint paint = new Paint(); if (mIsCharging) { paint.setColor(Color.GREEN); } else { if (mPower < 0.1) { paint.setColor(Color.RED); } else { paint.setColor(Color.WHITE); } } int width = (int) (mPower * (mMainRect.width() - mMargin*2)); int left = (int) (mMainRect.right - mMargin - width); int right = (int) (mMainRect.right - mMargin); 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); } private void setPower(float power) { mPower = power; invalidate(); } private BroadcastReceiver mPowerConnectionReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); mIsCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); setPower(((float) level)/scale); } }; @Override protected void onAttachedToWindow() { getContext().registerReceiver(mPowerConnectionReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); super.onAttachedToWindow(); } @Override protected void onDetachedFromWindow() { getContext().unregisterReceiver(mPowerConnectionReceiver); super.onDetachedFromWindow(); }}
0 0
- Android电量图标实现
- Android 4.4 kk 电量图标分析
- android 修改电量图标(改为数字图标)
- android 修改电量图标(改为数字图标)
- [android]状态栏的电量图标变化代码流程
- Android实现电量控制降低耗电
- android 4.4 电池电量显示分析(低电量提醒与电池图标)Java 层
- PX2分享Android预设桌面定制与电量图标修改以及版本更改
- android待机添加电量小部件,点击位置信息图标,模式切换需要改为四种
- android 4.4 电池电量显示分析(低电量提醒与电池图标)Java 层
- 《老罗Android》监听电量变化、Broadcast实现开机启动
- Android 电量监控、关机、重启功能的实现
- 电量百分比实现
- Android电量信息
- android 内存和电量
- android 电量控制
- android 2.3 电量管理
- android 2.3 电量管理
- 杂谈 ----- 几个月的忙碌工作简记
- 一个开始
- Git使用-3
- 第五章上机一 百度音乐标签网页
- 设计模式之适配器模式
- Android电量图标实现
- HDU 5510 2015ACM-ICPC沈阳赛区现场赛B题
- leetcode submission/20161016(find the difference)
- Config XVNC
- 让pre标签换行
- 在CentOS的防火墙上开启通行端口的方法
- C++函数的返回引用
- 安装软件|在VMware上安装macOS
- 第五章示例一 乱