安卓自定义电量显示图标

来源:互联网 发布:董小飒淘宝店亏损 编辑:程序博客网 时间:2024/05/16 11:27

安卓自定义电量显示图标-----使用广播监听电量的变化,获取实时电量并使用自定义view画出对应的图标,看图:




自定义view实现实时电量显示:BatteryView.java

import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.util.AttributeSet;import android.view.View;/** * 自定义view  电池电量条 * Created by ${赵小贱} on 2017/7/19. */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.WHITE);        paint.setAntiAlias(true);        paint.setStyle(Paint.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(Paint.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();    }}


显示电量图标的布局文件:activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:background="@color/colorPrimaryDark"    android:orientation="vertical">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center_vertical"        android:paddingBottom="10dp"        android:paddingTop="10dp">        <TextView            android:id="@+id/tv_voltameter_value"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="10dp"            android:text=""            android:textColor="@color/white"            android:textSize="15dp"            android:textStyle="bold" />        <com.hykjsjkj.wifidatebatterydemo.BatteryView            android:id="@+id/battery_view"            android:layout_width="25dp"            android:layout_height="10dp"            android:layout_marginLeft="5dp" />    </LinearLayout></LinearLayout>


调用代码:MainActivity.java

import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;import butterknife.Bind;import butterknife.ButterKnife;public class MainActivity extends AppCompatActivity {    @Bind(R.id.tv_voltameter_value)    TextView tvVoltameterValue;    private BatteryBroadcastReciver reciver;    private BatteryView mBatteryView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);        mBatteryView = (BatteryView) findViewById(R.id.battery_view);        //设置电量        initBattery();    }    /**     * 注册电量监听的广播     */    public void initBattery() {        //电量监听的广播        reciver = new BatteryBroadcastReciver(tvVoltameterValue, mBatteryView);        //创建一个过滤器        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);        //注册电量监听广播        registerReceiver(reciver, intentFilter);    }        @Override    protected void onDestroy() {        super.onDestroy();        if (reciver != null) {            unregisterReceiver(reciver);//解除注册        }    }}


源码下载地址:http://download.csdn.net/download/zhaoxiaojian1213/9977254


安卓实时更新显示时间:http://blog.csdn.net/zhaoxiaojian1213/article/details/77976688


安卓监听WiFi信号的变化:http://blog.csdn.net/zhaoxiaojian1213/article/details/77976504




原创粉丝点击