Android实现显示电量的控件代码
程序员文章站
2024-03-03 23:15:16
下面介绍了android实现显示电量的控件代码,具体代码如下:
1、目录结构,本人是使用安卓死丢丢。
2、运行界面,输入框中输入数值,点击刷新,会再电池中显...
下面介绍了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实现显示电量的控件代码就给大家介绍到这里了。希望大家继续关注我们的网站!