`
liliang1222
  • 浏览: 158693 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android实现充电时电量变化

 
阅读更多

监控电池变化比较简单,但是充电时候要电量从当前电量增长到满状态,然后一直重复,后来发现将对应的ImageView的background指定到animation即可

 

1.需要多张电量图片


电量状态1
电量状态2
 
电量状态3
 
 
电量状态4


电量状态5
 
电量状态6

 

2.然后生成多个animation文件,分别是从状态1到状态6,状态2到状态6.。。。。。

 

    如:animation_battery_1.xml

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
	android:oneshot="false">
	<item android:drawable="@drawable/battery_1" android:duration="200" />
	<item android:drawable="@drawable/battery_2" android:duration="200" />
	<item android:drawable="@drawable/battery_3" android:duration="200" />
	<item android:drawable="@drawable/battery_4" android:duration="200" />
	<item android:drawable="@drawable/battery_5" android:duration="200" />
	<item android:drawable="@drawable/battery_6" android:duration="200" />
</animation-list>
 

   如:animation_battery_2.xml

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
	android:oneshot="false">
	<item android:drawable="@drawable/battery_2" android:duration="200" />
	<item android:drawable="@drawable/battery_3" android:duration="200" />
	<item android:drawable="@drawable/battery_4" android:duration="200" />
	<item android:drawable="@drawable/battery_5" android:duration="200" />
	<item android:drawable="@drawable/battery_6" android:duration="200" />
</animation-list>
 

3.在代码里面通过设置ivBattery.setBackgroundResource(batteryAnimation),其中batteryAnimation为animation文件

public class BatteryActivity extends Activity {

	ImageView ivBattery;//电池电量
	ImageView ivBatteryCharging;//充电中
	
	TextView tvStatus;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.battery_charging);
		
		ivBattery = (ImageView)findViewById(R.id.iv_battry);
		ivBatteryCharging = (ImageView)findViewById(R.id.iv_battry_charging);
		tvStatus = (TextView)findViewById(R.id.tv_statues);
		
		registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		unregisterReceiver(batteryReceiver);
	}
	
	private BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
		
		@Override
		public void onReceive(Context context, Intent intent) {
			if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){
				int level = intent.getIntExtra("level", 0);
				int scale = intent.getIntExtra("scale", 100);
				int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_NOT_CHARGING);
				
				notifyBattery(level,scale,status);
			}
		}
	};
	
	
	public void notifyBattery(int level,int scale,int status){
		
		int per = scale/6;
		int batteryPic;//电量图片
		int batteryAnimation;//电量动态增长
		if(level<per){
			batteryAnimation = R.drawable.animation_battery_1;
			batteryPic = R.drawable.battery_1;
		}else if(level<per*2){
			batteryAnimation = R.drawable.animation_battery_2;
			batteryPic = R.drawable.battery_2;
		}else if(level<per*3){
			batteryAnimation = R.drawable.animation_battery_3;
			batteryPic = R.drawable.battery_3;
		}else if(level<per*4){
			batteryAnimation = R.drawable.animation_battery_4;
			batteryPic = R.drawable.battery_4;
		}else if(level<per*5){
			batteryAnimation = R.drawable.animation_battery_5;
			batteryPic = R.drawable.battery_5;
		}else{
			batteryAnimation = R.drawable.animation_battery_5;
			batteryPic = R.drawable.battery_6;
		}
		
		if(status==BatteryManager.BATTERY_STATUS_CHARGING){
			ivBattery.setBackgroundResource(batteryAnimation);//將電量背景修改為animation即可
			AnimationDrawable frameAnimation = (AnimationDrawable)ivBattery.getBackground();
			if(!frameAnimation.isRunning()){
				frameAnimation.stop();
				frameAnimation.start();
			}
			ivBatteryCharging.setVisibility(View.VISIBLE);
			
			tvStatus.setText("充电中,电量背景为animation");
		}else{
			ivBatteryCharging.setVisibility(View.INVISIBLE);
			
			ivBattery.setBackgroundResource(batteryPic);
			tvStatus.setText("没有充电,电量背景为图片");
		}
	}
}
 


 4.记得在manifest中添加权限

 

 <uses-permission android:name="android.permission.BATTERY_STATS"/>
 

 5.充电的时候界面显示,其中图片是动态的

 
   

 

6.没有充电时候显示



7。其他图片

 

电池背景图片

 充电的时候显示闪电

 

 

  • 大小: 2.8 KB
  • 大小: 2.8 KB
  • 大小: 2.8 KB
  • 大小: 2.8 KB
  • 大小: 2.8 KB
  • 大小: 2.8 KB
  • 大小: 4.1 KB
  • 大小: 4.1 KB
  • 大小: 2.9 KB
  • 大小: 2.9 KB
  • 大小: 3.9 KB
分享到:
评论
3 楼 jianglz123 2015-09-19  
博住可以发一份源码吗?谢谢409203628@qq.com
2 楼 lmy_java 2013-11-20  
求源码 1017236613@qq.com  谢谢
1 楼 fancychendong 2012-10-21  
求具体实现代码,按你的方法有点学不来

相关推荐

    android实现uboot充电显示

    首先,uboot充电显示功能是在电量低于特定阈值时,当设备插入充电器时,系统会进入一个特殊的uboot充电状态。在这个状态下,uboot不仅会显示充电信息,还可能限制设备的功能,以保护电池并确保安全充电。当电池电量...

    【Android】获取电池电量

    Android 获取电池电量是 Android 应用程序开发中一个常见的需求,通过获取电池电量,可以实现在手机电池电量低时发出警告,或者在电池电量不足时提醒用户充电。Android 系统中提供了多种方式来获取电池电量,本文将...

    Android 电池电量进度条,上下滚动图片的进度条(battery)

    在Android开发中,创建一个模拟真实手机电池电量进度的组件是一项常见的需求,它可以提供用户友好的界面反馈。本文将深入探讨如何实现一个上下滚动的电池电量进度条,并根据电量百分比进行动态更新。 首先,我们...

    电量计-gauge驱动android

    本文将深入探讨“电量计-gauge驱动android”这一主题,重点关注max17040和bq27410这两款电量计芯片在Android设备中的驱动实现。 首先,max17040是一款集成的锂离子/锂聚合物电池电量计,它通过I2C接口与主控芯片...

    android得到电池的各种状态(电量、图标,温度、类型等)

    当电池状态发生变化时,BroadcastReceiver会接收到这个广播,并在onReceive()方法中处理新的电池状态。 在提供的源代码中,应该包含了创建BroadcastReceiver,注册接收ACTION_BATTERY_CHANGED广播,以及解析和更新...

    接收系统广播实现查看电池电量

    "接收系统广播实现查看电池电量"这一技术点涉及到Android的Intent机制、BroadcastReceiver(广播接收器)以及电池状态数据的解析。下面将详细介绍如何实现这个功能。 首先,我们需要创建一个BroadcastReceiver来...

    自定义电池图标充电效果

    在Android中,可以使用AnimationDrawable类创建帧动画,将不同电量的图标作为帧,通过设置动画时长和帧率,模拟充电过程。在iOS中,可以使用UIView的动画方法,结合CADisplayLink或者NSTimer定时更新电池图标的图片...

    android 显示当前电量

    Android系统的BatteryManager服务提供了关于电池状态的各种信息,如电量、充电状态、电压等。通过获取BatteryManager的实例,我们可以查询到这些信息。 2. **获取BatteryManager实例**: 首先,我们需要在应用...

    Android 之 监控手机电量

    此外,Android系统会发送广播`ACTION_BATTERY_CHANGED`当电池状态发生变化时,开发者可以通过注册BroadcastReceiver监听这个广播来实时获取电量变化: ```java IntentFilter filter = new IntentFilter(Intent....

    Android 电量显示Widgets插件实现.rar

    Android 电量显示Widgets插件实现,收到intent,就及时修改TextView信息,使得Activity显示时,电池信息也能动态显示,点击屏幕任意位置,关闭电池信息Activity,及时动态修改Activity上文字信息的函数,提示信息...

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

    需要创建一个广播接收器`PowerConnectionReceiver`,并在`AndroidManifest.xml`中注册它,同时指定`ACTION_POWER_CONNECTED`和`ACTION_POWER_DISCONNECTED`这两个意图过滤器,这样当充电状态发生变化时,接收器会被...

    Android动态绘制电池电量.rar

    在Android开发中,动态绘制电池电量是一个常见的需求,特别是在创建自定义系统状态栏或者电量监控应用时。这个“Android动态绘制电池电量.rar”压缩包很可能包含了一个示例项目,用于展示如何实现实时更新的电池电量...

    android电池电量监控程序

    你需要创建一个注册了ACTION_BATTERY_CHANGED广播接收器的类,该广播会在电池状态改变时触发,如电量变化、充电状态等。 2. **BatteryManager**: Android提供的BatteryManager服务是获取电池状态信息的主要接口。你...

    Android 电量显示Widgets插件源码.rar

    此外,可能还需要考虑电量变化时的动态效果,如平滑过渡或轻微的动画效果。 6. **更新频率**: 考虑到性能和电池消耗,Widget的更新频率需要适当调整。通常,电量百分比的变化不会太频繁,所以可以设定一定的更新...

    Android电量监控

    为了更精确地获取电量变化,可以注册BroadcastReceiver监听ACTION_BATTERY_CHANGED广播。 ```java IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(batteryReceiver, ...

    Android代码-broadcast电池电量显示源码.zip

    通过这个源码示例,开发者可以学习如何在Android应用中实时监控电池状态,并在电量变化时做出相应的响应,这对于电量管理类应用尤其有用。理解并掌握这些知识点,对于Android开发人员来说是非常有价值的。

    Android监控电量变化的代码例子

    在Android系统中,开发者可以通过监听系统的BatteryManager广播来获取设备的电量变化情况,以及与之相关的锁屏和解锁事件。这个过程涉及到Android的BroadcastReceiver、IntentFilter和电池状态API的使用。下面我们将...

    Android充电伴侣的设计和实现

    ### Android充电伴侣的设计和实现 #### 一、引言 随着移动互联网技术的快速发展和智能设备功能的不断拓展,智能手机已成为现代人生活中不可或缺的一部分。然而,由于强大的功能和丰富的应用,智能手机面临着一个...

    Android手机流量电量监控程序

    1. **BatteryManager**:Android的BatteryManager服务提供了电池状态的信息,如电量百分比、充电状态等。通过`getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)`可获取电池当前容量。 2. **Intent.ACTION_...

    android4.4 kk 电量图标横屏和竖屏

    通常,Android系统会自动处理屏幕方向变化,但电量图标的布局和大小可能需要特殊调整,以确保在不同尺寸和方向的屏幕上都能清晰、美观地显示。开发者可能需要为横屏和竖屏分别设计图标,并在代码中适当地应用这些...

Global site tag (gtag.js) - Google Analytics