`
liliang1222
  • 浏览: 157376 次
  • 性别: 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 电量显示Widgets插件实现.rar

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

    android 系统中的几乎所有广播接收者

    BATTERY_CHANGED_ACTION 充电状态,或者电池的电量发生变化 "android.intent.action.BATTERY_CHANGED" BOOT_COMPLETED_ACTION 在系统启动后,这个动作被广播一次(只有一次) "android.intent.action.BOOT_COMPLETED" ...

    Android电池电量监听的示例代码

    监听电池状态只需要接收Intent.ACTION_BATTERY_CHANGED的广播即可,当电池状态发生变化时会发出广播。 1.运行状态如下图: 1.充电中的状态   2.未充电时的状态   2.实现代码如下,各个状态通过名字就很容易知道...

    Android项目项目_battery(电池)监控程序.rar

    4. **自定义通知提醒**:当电池电量低于预设阈值时,发送自定义通知提醒用户充电。 5. **历史数据记录与分析**:保存电池相关的历史数据,方便用户回顾和分析设备电池性能的变化趋势。 该项目采用Android Studio...

    android-battery

    android-battery##名称:电池管家##描述:仿金山电池医生的一款APP================##功能:获取电池的基本信息(电量,电压,Craft.io,可用时间等)近三天电量变化充电状态显示应用耗电排行省电模式关闭卸载应用##...

    电池信息检测(Android)

    要求检测到安卓手机的电量,电压,连接状态,充电连接方式,以及当前的时间,而这些与电池相关的信息都会通过系统广播发出来,去注册相应广播接收即可,然后通过BatteryManager这个类来获取这些信息。 2.&gt;首先通过...

    Android 广播大全 Intent Action 事件详解

    具体内容如下所示: Intent.ACTION_AIRPLANE_MODE_CHANGED; //关闭或打开飞行模式时的广播 Intent.ACTION_BATTERY_CHANGED;...//表示电池电量充足,即从电池电量低变化到饱满时会发出广播 Intent.ACTION_BOOT_COMP

    One省电卫士:One Power Guard 12.5.0

    智能模式:此模式能够随着系统负荷地变化智能调整cpu的频率,优化内核等,大幅延长电池电量的使用时长,此模式优化系统、充电、CPU、Wifi等参数,它与其他参数不同,适合一般用户。 省电模式:此模式在系统允许的低...

    BatteryLoading

    我想大家都见过手机充电过程中,电池电量变化的过程,没错BatteryLoading就是一款类似电池的充电过程的加载动画,动画效果炫酷、十分精美

    监控设备电池状态变化

    react-native-device-battery 获取并观察设备电池电量和充电状态 安装 安装节点模块 npm install react-native-device-battery --save iOS TBD Android 将以下内容添加到android/settings.grade include ':react -...

    PowerMonitorManager - 副本.java

    //监测充电状态变化 intentFilter.addAction(Intent.ACTION_POWER_CONNECTED); intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED); //监测电量的重要变化 intentFilter.addAction(Intent.ACTION_...

    MightyText - 来自PC的短信和来自计算机的文本「MightyText - SMS from PC & Text from Computer」-crx插件

    ★在您的计算机上获取低电量警报(当您的手机电量不足时) 第1步:在您的手机上安装ANDROID APP:https://market.android.com/details?id=com.texty.sms 注意 - MightyText Chrome扩展程序只有在您的手机上成功安装...

Global site tag (gtag.js) - Google Analytics