简单实现的一个显示电池的电量的View,具体看代码

public class MainActivity extends Activity {

BatteryView mBatteryView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mBatteryView = (BatteryView) findViewById(R.id.battery_view);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

protected void onResume() {

super.onResume();

register();

}

@Override

protected void onPause() {

super.onPause();

unregister();

}

private void register() {

registerReceiver(batteryChangedReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

}

private void unregister() {

unregisterReceiver(batteryChangedReceiver);

}

// 接受广播

private BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver() {

public void onReceive(Context context, Intent intent) {

if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {

int level = intent.getIntExtra("level", 0);

int scale = intent.getIntExtra("scale", 100);

int power = level * 100 / scale;

Log.d("Deom", "电池电量::" + power);

mBatteryView.setPower(power);

}

}

};

}

public class BatteryView extends View{

private int mPower = 100;

public BatteryView(Context context) {

super(context);

}

public BatteryView(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

int battery_left = 0;

int battery_top = 0;

int battery_width = 25;

int battery_height = 15;

int battery_head_width = 3;

int battery_head_height = 3;

int battery_inside_margin = 3;

//先画外框

Paint paint = new Paint();

paint.setColor(Color.BLACK);

paint.setAntiAlias(true);

paint.setStyle(Style.STROKE);

Rect rect = new Rect(battery_left, battery_top,

battery_left + battery_width, battery_top + battery_height);

canvas.drawRect(rect, paint);

float power_percent = mPower / 100.0f;

Paint paint2 = new Paint(paint);

paint2.setStyle(Style.FILL);

//画电量

if(power_percent != 0) {

int p_left = battery_left + battery_inside_margin;

int p_top = battery_top + battery_inside_margin;

int p_right = p_left - battery_inside_margin + (int)((battery_width - battery_inside_margin) * power_percent);

int p_bottom = p_top + battery_height - battery_inside_margin * 2;

Rect rect2 = new Rect(p_left, p_top, p_right , p_bottom);

canvas.drawRect(rect2, paint2);

}

//画电池头

int h_left = battery_left + battery_width;

int h_top = battery_top + battery_height / 2 - battery_head_height / 2;

int h_right = h_left + battery_head_width;

int h_bottom = h_top + battery_head_height;

Rect rect3 = new Rect(h_left, h_top, h_right, h_bottom);

canvas.drawRect(rect3, paint2);

}

public void setPower(int power) {

mPower = power;

if(mPower < 0) {

mPower = 0;

}

invalidate();

}

}

效果如下:

android电量显示,Android显示电量——自定义电池View相关推荐

  1. 【Android开发】用户界面设计-开发自定义的View

    效果图: Android中,所有的UI界面都是由View类和ViewGroup类及其子类组合而成的.View是所有UI组件的基类(父类),为ViewGroup类是容纳这些UI组件的容器,其本身也是Vi ...

  2. Android显示电量——自定义电池View

    源码下载地址:http://download.csdn.net/detail/feifei454498130/6462989 本文原创转载请注明地址:http://blog.csdn.net/feif ...

  3. Android自定义电池电量显示组件(kotlin,java)

    最近产品研发需求需要显示在线设备的电池电量状态,然后UI给出的效果的图是这样的 于是就开始了自定义个,因为是项目特定的UI所以很多属性都没有直接抽取到styles里面了,直接上代码(因为项目是使用ko ...

  4. android 10.0状态栏显示电量百分比

    1.概述 在10.0的系统产品开发中,对于系统默认的电池电量是不显示的,所以产品需求要求显示电池电量,方便知道当前电量,方便显示在电量不足的情况下可以及时充电,所以来实现这个功能 2.状态栏显示电量百 ...

  5. android电量百分比,Android P 状态栏显示电量百分比

    状态栏默认显示电量百分比 在Android P 的BatteryMeterView中有集成显示电量百分比相关代码,所以我们只需要将其显示控制条件默认打开就行. 在Settings的Battery的子页 ...

  6. android 绘制5格电量,自定义电池(5格电量)

    由于用户需求自定义扩展view比较麻烦就是用view布局组合了一个简单的电池 1.colors.xml #FF0099 #2BB043 2.rectangle_shape.xml android:sh ...

  7. android 电池电量广播,Android查看电池电量的方法(基于BroadcastReceiver)

    本文实例讲述了Android查看电池电量的方法.分享给大家供大家参考,具体如下: 程序如下: import android.app.Activity; import android.app.Dialo ...

  8. android 电量管理机制,电池电量分析---android篇

    原标题:电池电量分析---android篇 本文将从底层到上层介绍Android系统中电量显示这一块,电池检测采用的是ADC采样,不是使用市场上封装好的电量计芯片: 1.驱动层 Linux内核中提供p ...

  9. android自定义dialog不显示,Android 自定义的dialog显示不正常呢,怎么回事???

    Android 自定义的dialog显示不正常呢,怎么回事??? 用android的自定义布局文件: android:layout_width="match_parent" and ...

最新文章

  1. 使用React Hooks你可能会忽视的作用域问题
  2. nedmalloc结构分析
  3. 闲聊Linux内存管理(1)
  4. Yeslab现任明教教主ISE课程前七部分免费发布
  5. 3.Android的新虚拟ART与原虚拟机DVM的区别
  6. php将文件转换为utf-8,PHP-将邮件正文转换为UTF-8
  7. EDA实验课课程笔记(七)——DC(Design Compiler)的简介及其图像化使用(一)
  8. C++ 常见错误(01) —— error LNK1104: 无法打开文件“avcodec.lib”
  9. 2018-2019-1 20165323《信息安全系统设计基础》第一周学习总结
  10. vijos1942——小岛 Floyed
  11. mPEG-Pyrene 甲氧基PEG芘丁酸
  12. 2023年计算机考研院校推荐50所
  13. 基于Hadoop的项目实战-职位数据综合分析
  14. 开关电源正负极两端加104电容的作用是什么?
  15. 下载Google Play上面的应用
  16. QtEmbedded-4.8.6-arm 字体模糊 图片锐化不清晰
  17. 塔米狗企业并购与投融资信息服务平台
  18. HMM、MEMM、CRF
  19. 登录管理(权限管理) token
  20. 皓月战地3不显示服务器,【求助】登录皓月服出错。。

热门文章

  1. Qt技巧-快速求最值
  2. c27-数组退化(数组参数和指针参数分析)
  3. 5G通信系统应用场景与消费物联网、工业物联网应用场景综合分析
  4. 简单、安全的混合远程办公解决方案丨Parallels RAS简介
  5. 90页第三题,创建一个 Rectangle类,添加width和lenght两个成员变量 在 Rectangle类中添加两种方法分别计算矩形的周长和面积 ,编程利用Rectangle输出一个矩形的
  6. 蛙蛙推荐:蛙蛙牌软件注册码算法
  7. 在Mac上安装Git及建立仓库
  8. linux内核串口日志抓取-minicom工具使用方法
  9. 第三方服务:腾讯云短信服务 Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.json.JSO
  10. 《推动可持续社会价值创新》的意涵及对人才需求及个人陈述 (PS) 的启示