Android实现显示电量的控件代码

下面介绍了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, 0, 0, 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文件中定义:

<LinearLayout
  android:layout_width="wrap_content"
  android:layout_marginLeft="30dp"
  android:layout_height="30dp">
  <com.example.administrator.batterytest.BatteryState
    android:id="@+id/bs_power"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
</LinearLayout> 

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实现显示电量的控件代码就给大家介绍到这里了。希望大家继续关注我们的网站!

(0)

相关推荐

  • Android实现侦听电池状态显示、电量及充电动态显示的方法

    本文实例讲述了Android实现侦听电池状态显示.电量及充电动态显示的方法,是Android应用程序开发中非常常用的重要功能.分享给大家供大家参考之用.具体方法如下: 使用android系统的电池侦听和系统的电池图片如下: 引入源代码中的两个xml文件(这里我在android2.2的jar包中找不到,所以才引入,源代码路径:C:\android-sdk-windows\platforms\android-8\data\res\drawable),之后会发现stat_sys_battery.xml

  • Android4.4开发之电池低电量告警提示原理与实现方法分析

    本文实例讲述了Android4.4电池低电量告警提示原理与实现方法.分享给大家供大家参考,具体如下: 之前版本的电池电量低是通过发送 intent ACTION_BATTERY_LOW来实现的,而在android4.4中,通过发送intent ACTION_BATTERY_CHANGED,也就是电池电量只要变化就检查是否需要低电量告警,并且实现挪到了PowerUI中. 路径: frameworks/base/packages/SystemUI/src/com/android/systemui/p

  • Android电池电量跳变

    问题情形: 1.电量跳变到50% 2.电池ID脚接地 3.温度脚来判断电池是否在位 推测原因: 判断电池在位的方法: qpnp-linear-charger.c enum bpd_type{ BPD_TYPE_BAT_ID="bpd_id", BPD_TYPE_BAT_THM="bpd_thm", BPD_TYPE_BAT_THE_BAT_ID="bpd_thm_id", } 先在设备树查找bpd是否有值 of_property_read_str

  • Android中检查、监听电量和充电状态的方法

    当你在更改后台更新频率来减少这些更新对电池寿命的影响时,检查当前电量和充电状态是一个好的开始. 电池寿命通过剩余电量和充电状态来影响应用更新的执行.当用交流电充电时,执行更新操作对设备的影响是微不足道的,所以在大多数案例里,你可以把更新频率调到最快.如果设备不在充电,降低更新频率可以帮助延长电池寿命. 类似的,你可以检查电池剩余电量级别,在电量低时,应该降低更新频率甚至停止更新. 注:此处的更新,指的是类似发送心跳包的动作,或者定时更新内容.并非仅仅指更新应用版本.如果是用户动作,比如翻页刷新,

  • Android编程之电池电量信息更新的方法(基于BatteryService实现)

    本文实例讲述了Android编程之电池电量信息更新的方法.分享给大家供大家参考,具体如下: 电池的信息,电压,温度,充电状态等等,都是由BatteryService来提供的.BatteryService是跑在system_process当中,在系统初始化的时候启动,如下 在SystemServer.java中可以看到启动BatteryService的代码: Log.i(TAG, "Starting Battery Service."); BatteryService battery =

  • Android获取手机电池电量用法实例

    本文实例讲述了Android获取手机电池电量用法.分享给大家供大家参考.具体如下: 原理概述: 手机电池电量的获取在应用程序的开发中也很常用,Android系统中手机电池电量发生变化的消息是通过Intent广播来实现的,常用的Intent的Action有  Intent.ACTION_BATTERY_CHANGED(电池电量发生改变时).Intent.ACTION_BATTERY_LOW(电池电量达到下限时).和Intent.ACTION_BATTERY_OKAY(电池电量从低恢复到高时). 当

  • 解析Android获取系统cpu信息,内存,版本,电量等信息的方法详解

    Android获取系统cpu信息,内存,版本,电量等信息 1.CPU频率,CPU信息:/proc/cpuinfo和/proc/stat 通过读取文件/proc/cpuinfo系统CPU的类型等多种信息.读取/proc/stat 所有CPU活动的信息来计算CPU使用率 下面我们就来讲讲如何通过代码来获取CPU频率: 复制代码 代码如下: package com.orange.cpu; import java.io.BufferedReader;import java.io.FileNotFound

  • Android查看电池电量的方法(基于BroadcastReceiver)

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

  • android电源信息查看(电量、温度、电压)实例代码

    本文实例讲述了android电源信息查看方法.分享给大家供大家参考.具体如下: 1. PowerTestActivity: import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os

  • Android中获取电池电量实例代码

    复制代码 代码如下: /** * * @author chrp * *显示当前电池电量 */ public class MainActivity extends Activity { private TextView tv; /** * 广播接受者 */ class BatteryReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO

随机推荐