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文件定义该控件时引用的属性集
@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// 计算控件尺寸super.onMeasure(widthMeasureSpec, heightMeasureSpec);}@Overrideprotected 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文件中定义:
<LinearLayoutandroid:layout_width="wrap_content"android:layout_marginLeft="30dp"android:layout_height="30dp"><com.example.administrator.batterytest.BatteryStateandroid: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() {@Overridepublic void onClick(View v) {float power = Integer.parseInt(mEtPower.getText().toString());float p = power / 100;mBsPower.refreshPower(p);}});
源码 http://download.csdn.net/detail/y280903468/9480079
Android做一个显示电量的小控件相关推荐
- 使用Vue做一个自定义的日历小控件
废话少说,先上效果图: 可以在效果图中看到,选择不同的月份的时候当月天数与星期几都是一一对应,非当月天数则是灰色显示,一目了然. 并且此日历控件支持自动确定当前时间,每次打开默认显示的就是最新的月份, ...
- Android而一个超级漂亮的日历控件
※效果 ※用法 package com.fancyy.calendarweight;import java.util.ArrayList; import java.util.List;import a ...
- android 固定底部 布局_Android系统列表控件
在android系统控件中,有多个控件可以展示列表数据. 一.ListView 该组件是android中最常用的一个UI组件,用于实现在屏幕上显示多个内容,以便于我们用手指进行滑动. ListView ...
- android listview添加数据_Android系统列表控件
在android系统控件中,有多个控件可以展示列表数据. 一.ListView 该组件是android中最常用的一个UI组件,用于实现在屏幕上显示多个内容,以便于我们用手指进行滑动. ListView ...
- Android UI设计之十一自定义ViewGroup,打造通用的关闭键盘小控件ImeObser
2019独角兽企业重金招聘Python工程师标准>>> 转载请注明出处:http://blog.csdn.net/llew2011/article/details/51598682 ...
- Android 仿微信语音录音小控件
Android 仿微信语音录音小控件 前段时间一直在做IM聊天这方面的撸码工作,涉及到了很多小控件,有时间我会慢慢给大家分享一下我的小成果,希望大家一起学习,一起进步,今天来和大家来说一下Androi ...
- Android之RemoteViews篇上————通知栏和桌面小控件
Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 文章目录 Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 二.RemoteViews的概 ...
- 如何在Android实现桌面清理内存简单Widget小控件
如何在Android实现桌面清理内存简单Widget小控件 我们经常会看到类似于360.金山手机卫士一类的软件会带一个widget小控件,显示在桌面上,上面会显示现有内存大小,然后会带一个按键功能来一 ...
- android桌面时钟小控件开发记录
所谓桌面小控件,就是能之间显示在Android系统桌面的小程序. 桌面小控件的实现是基于Broadcast的形式实现的,因此,每一个桌面小控件都对应于一个BroadcastReceiver类.Andr ...
最新文章
- Spring源码分析【7】-Spring 模板页和JSP文件的编译
- R语言使用ggplot2包的快速可视化函数qplot绘制分组箱图(jitter、分组颜色配置)实战
- 人工智能和大数据的开发过程中需要注意这12点
- pythonfor循环语句1到7、不要4_【IT专家】关于Python中的for循环控制语句
- 开源如此火热,但研究表明该领域已不再增长
- ML之Hash_HamMingDistance:基于输入图片哈希化(均值哈希+差值哈希)即8*8个元素的单向vector利用汉明距离算法进行判别
- 不同局域网内经Internet的P2P通信技术总结
- 十二、深入JavaScript中的Date
- 在 Java CAPS 中使用 LDAP
- node nest 框架学习(一)
- android 嵌套分组拖动_GitHub - Mosect/DragLayout: Android拖拽控件,支持上下左右滑动、折叠或者嵌套ListView、RecyclerView等...
- php字符串怎么传到html_php字符串函数(四):html与字符串之间的转换
- vs代码补全的快捷键_iPad Pro变生产力工具,你还缺个轻量级浏览器端代码编辑器...
- 数据挖掘比赛笔记总结
- 计算机电脑的时区怎么弄,电脑时区怎么设置,教你win10中国时区UTC设置教程
- 提高团队协作效率就靠它们了!
- 50行实现C语言FM收音机-Taskbus Stdio封装器在SDR课程中的应用
- USB通信协议与供电协议全解
- RK3588 ssh Failed to start OpenBSD Secure Shell server 以及E: Sub-process /usr/bin/dpkg returned无法下载软件
- ios CAShapeLayer
热门文章
- MySQL高级-索引(BTree)结构
- linux系统中用户账户信息保存在,【填空题】Linux系统中,除密码外的用户账户信息保存在 配置文件中...
- 奥特曼系列ol服务器名称带怪兽,《奥特曼系列ol》怪兽搭配 怪兽阵容搭配推荐...
- 前端三大法宝:HTML CSS JS JSON
- 谷歌推出人工智能自动绘图工具AutoDraw
- 为何我不喜欢短视频以及…
- Java中实现SMTP邮件服务器-用demo简单粗暴的来发一波邮件了
- 小程序商城系统经营小妙招!
- IOS - 手机屏幕上方显示 VPN 图标怎么回事?
- layui 使用 echarts