android 电量控件,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,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实现显示电量的控件代码相关推荐
- Android调用相机拍摄照片并显示到 ImageView控件中
在前面的一篇文章中曾介绍过简单的开启相机照相功能,详见 Android简单调用相机Camera功能,实现打开照相功能 ,这一次就会将前面拍摄的照片显示到ImageView中,形成一个完整的效果 看实 ...
- android电量百分比,Android P 状态栏显示电量百分比
状态栏默认显示电量百分比 在Android P 的BatteryMeterView中有集成显示电量百分比相关代码,所以我们只需要将其显示控制条件默认打开就行. 在Settings的Battery的子页 ...
- 腾讯Android自动化测试实战3.1.4 Robotium的控件获取、操作及断言
3.1.4 Robotium的控件获取.操作及断言 Robotium是一款在Android客户端中的自动化测试框架,它需要模拟用户操作手机屏幕.要完成对手机的模拟操作,应该包含以下几个基本操作: (1 ...
- 使用PagedDataSource类实现DataList和Repeater控件的分页显示
Asp.net提供了三个功能强大的列表控件:DataGrid.DataList和Repeater控件,但其中只有DataGrid控件提供分页功能.相对DataGrid,DataList和Repeate ...
- Android的WebView控件载入网页显示速度慢的究极解决方案
Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] Android客户端中混搭HTML页面,会出现虽然H ...
- 5 控件固定大小_【聊技术】在Android中实现自适应文本大小显示
本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示. 想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的.比如列表中的文章标题.界面下方的按钮文本等等. ...
- android使组件居中,Android图文居中显示控件使用方法详解
最近项目中用到了文字图标的按钮,需要居中显示,如果用TextView实现的方式,必须同时设置padding和drawablePadding.如下: android:layout_width=" ...
- [Android] 拍照、截图、保存并显示在ImageView控件中
最近在做Android的项目,其中部分涉及到图像处理的内容.这里先讲述如何调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法. PS:作者购买 ...
- Android 显示全文折叠控件
转载请注明来源! 一般列表里文字太多的一个折叠效果的空间,效果图如下. 当文字超过设定的行数后就折叠,小于设定行数不显示展开按钮.下面上代码. 先看布局文件: <?xml version=&qu ...
最新文章
- Linux系统服务器如何禁ping
- 2006校园流行语锋线排行TOP10
- 找找 Spring Event 源码中各种设计模式的使用
- Leetcode-13. 罗马数字转整数(C++)
- 工厂模式一之简单工厂
- 【面试】JAVA中交换值的三种方式
- 扫地机器人返充原理_扫地机器人原理是什么?
- 利用均差的牛顿插值法(Newton)
- python redis pipeline使用方法_python使用pipeline批量读写redis的方法
- Google 的 C++ 代码规范
- 理解Spring Boot
- css实现垂直居中(+水平居中)
- 今天心情好,发首我喜欢的歌---天黑黑
- pygame的安装与使用
- Linux 查看日志文件命令(整合)
- 解决 npm i 时出现npm ERRcode EINTEGRITY npm ERR sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+I
- Android 9.0中sdcard 的权限和挂载问题
- 上海mba学费一览表2021
- Ubuntu18.04使用Xorg创建虚拟屏幕
- win10切换输入法快捷键_电脑小白必学的5个Win10技巧