下面介绍了Android实现显示电量的控件代码,具体代码如下:

1、目录结构,本人是使用安卓死丢丢。

2、运行界面,输入框中输入数值,点击刷新,会再电池中显示出相应的电量

3、绘制自定义电池控件,首先,新建一个类BatteryState继承View

private Context mContext;

private float width;

private float height;

private Paint mPaint;

private float powerQuantity=0.5f;//电量

要使用到的变量

public BatteryState(Context context) {

super(context);

mContext=context;

mPaint = new Paint();

}

public BatteryState(Context context,AttributeSet attrs) {

super(context,attrs);

mContext=context;

mPaint = new Paint();

}

public BatteryState(Context context,AttributeSet attrs,int defStyleAttr) {

super(context,attrs,defStyleAttr);

mContext=context;

mPaint = new Paint();

}

三个构造方法,自定义控件的时候一般会把这三个构造方法写出来,便于在layout中使用或者直接定义,其中AttributeSet是当使用xml文件定义该控件时引用的属性集

@Override

protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec) {

// 计算控件尺寸

super.onMeasure(widthMeasureSpec,heightMeasureSpec);

}

@Override

protected void onDraw(Canvas canvas) {

//绘制界面

super.onDraw(canvas);

Bitmap batteryBitmap=ReadBitMap(mContext,R.drawable.battery_empty);//读取图片资源

width=batteryBitmap.getWidth();

height=batteryBitmap.getHeight();

if (powerQuantity>0.3f&&powerQuantity<=1) {

// 电量少于30%显示红色

mPaint.setColor(Color.GREEN);

}

else if (powerQuantity>=0&&powerQuantity<=0.3)

{

mPaint.setColor(Color.RED);

}

// 计算绘制电量的区域

float right=width*0.94f;

float left=width*0.21f+(right-width*0.21f)*(1-powerQuantity);

float tope=height*0.45f;

float bottom=height*0.67f;

canvas.drawRect(left,tope,right,bottom,mPaint);

canvas.drawBitmap(batteryBitmap,mPaint);

}

由于我们定义的控件时一个单个控件,不是容器控件,所以我只重写了onMeasure、onDraw分别用来计算大小和绘制界面,根据背景图片来计算要绘制的区域

public void refreshPower(float power)

{

powerQuantity=power;

if (powerQuantity>1.0f)

powerQuantity=1.0f;

if (powerQuantity<0)

powerQuantity=0;

invalidate();

}

4、在xml文件中定义:

android:layout_width="wrap_content"

android:layout_marginLeft="30dp"

android:layout_height="30dp">

android:id="@+id/bs_power"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

5、在Activity中使用

mBtnTry = (TextView) findViewById(R.id.btn_try);

mBtnTry.setText("刷新电量");

// mBtnTry.setBackground(getResources().getDrawable(R.drawable.maxwell_sun_5_bar));

mBsPower = (BatteryState) findViewById(R.id.bs_power);

mBtnTry.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

float power = Integer.parseInt(mEtPower.getText().toString());

float p = power / 100;

mBsPower.refreshPower(p);

}

});

希望本文所述对你有所帮助,Android实现显示电量的控件代码就给大家介绍到这里了。希望大家继续关注我们的网站!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

android 电量控件,Android实现显示电量的控件代码相关推荐

  1. Android调用相机拍摄照片并显示到 ImageView控件中

    在前面的一篇文章中曾介绍过简单的开启相机照相功能,详见  Android简单调用相机Camera功能,实现打开照相功能 ,这一次就会将前面拍摄的照片显示到ImageView中,形成一个完整的效果 看实 ...

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

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

  3. 腾讯Android自动化测试实战3.1.4 Robotium的控件获取、操作及断言

    3.1.4 Robotium的控件获取.操作及断言 Robotium是一款在Android客户端中的自动化测试框架,它需要模拟用户操作手机屏幕.要完成对手机的模拟操作,应该包含以下几个基本操作: (1 ...

  4. 使用PagedDataSource类实现DataList和Repeater控件的分页显示

    Asp.net提供了三个功能强大的列表控件:DataGrid.DataList和Repeater控件,但其中只有DataGrid控件提供分页功能.相对DataGrid,DataList和Repeate ...

  5. Android的WebView控件载入网页显示速度慢的究极解决方案

    Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] Android客户端中混搭HTML页面,会出现虽然H ...

  6. 5 控件固定大小_【聊技术】在Android中实现自适应文本大小显示

    本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示. 想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的.比如列表中的文章标题.界面下方的按钮文本等等. ...

  7. android使组件居中,Android图文居中显示控件使用方法详解

    最近项目中用到了文字图标的按钮,需要居中显示,如果用TextView实现的方式,必须同时设置padding和drawablePadding.如下: android:layout_width=" ...

  8. [Android] 拍照、截图、保存并显示在ImageView控件中

    最近在做Android的项目,其中部分涉及到图像处理的内容.这里先讲述如何调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法.     PS:作者购买 ...

  9. Android 显示全文折叠控件

    转载请注明来源! 一般列表里文字太多的一个折叠效果的空间,效果图如下. 当文字超过设定的行数后就折叠,小于设定行数不显示展开按钮.下面上代码. 先看布局文件: <?xml version=&qu ...

最新文章

  1. Linux系统服务器如何禁ping
  2. 2006校园流行语锋线排行TOP10
  3. 找找 Spring Event 源码中各种设计模式的使用
  4. Leetcode-13. 罗马数字转整数(C++)
  5. 工厂模式一之简单工厂
  6. 【面试】JAVA中交换值的三种方式
  7. 扫地机器人返充原理_扫地机器人原理是什么?
  8. 利用均差的牛顿插值法(Newton)
  9. python redis pipeline使用方法_python使用pipeline批量读写redis的方法
  10. Google 的 C++ 代码规范
  11. 理解Spring Boot
  12. css实现垂直居中(+水平居中)
  13. 今天心情好,发首我喜欢的歌---天黑黑
  14. pygame的安装与使用
  15. Linux 查看日志文件命令(整合)
  16. 解决 npm i 时出现npm ERRcode EINTEGRITY npm ERR sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+I
  17. Android 9.0中sdcard 的权限和挂载问题
  18. 上海mba学费一览表2021
  19. Ubuntu18.04使用Xorg创建虚拟屏幕
  20. win10切换输入法快捷键_电脑小白必学的5个Win10技巧

热门文章

  1. GitLab CI/CD 基础教程(三)
  2. Altium Designer Winter09 的使用心得
  3. 从SQL Server CloudDBA 看云数据库智能化
  4. 多层mvc,thikphp进阶
  5. memcache缓存服务器(nginx php memcache mysql)
  6. [linux]windows无法访问samba的安全性问题(关闭selinux)
  7. Residual Networks
  8. win7编程接口的一些变化
  9. Cenetos 下sudo的使用
  10. WCF+Silverlight部署本机备忘