多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 練手小項目(5)安全衛士_電源管理

練手小項目(5)安全衛士_電源管理

來源:程序員人生   發布時間:2014-12-23 08:30:31 閱讀次數:3226次

1直想把外國的1個工具箱的電池那個動畫做出來,今天有時間就想做1下 界面是這樣的,制作了基本部份,果然還是手機衛士,比較考基礎。



①通過Intent去的手機音量的變化

 電池的電量1直是手機用戶所關心的問題,而在android系統中,專門提供了1個獲得電池電量的消息 Action―ACTION_BATTERY_CHANGED。


 回到,demo里面 既然我要獲得系統的信息,就先注冊1個廣播,獲得電池的信息,BatteryReceiver.java類 廣播 4大組件先去配置文件注冊1把 我要獲得的信息,都在UI上面,用1個map集合裝上我們信息 通過handler.dispatchMessage 將信息傳過去..................


package com.example.bettary.recevier; import java.util.HashMap; import java.util.Map; import com.example.bettary.BatteryManagerActivity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.BatteryManager; import android.os.Message; /** * @author xiaoxin007 * 2014⑴2⑷下午5:53:01 * TODO 電池的廣播接收者 */ public class BatteryReceiver extends BroadcastReceiver { Map<String, Object> map; private Message message; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { map = new HashMap<String, Object>(); /** 電池剩余電量 */ map.put("level", "" + intent.getIntExtra("level", 0)); /** 獲得電池滿電量數值 */ map.put("scale", "" + intent.getIntExtra("scale", 0)); /** 獲得電池技術支持 */ map.put("technology", "" + intent.getStringExtra("technology")); /** 獲得電池狀態 */ map.put("status", ""+ intent.getIntExtra("status",BatteryManager.BATTERY_STATUS_UNKNOWN)); /** 獲得電源信息 */ map.put("plugType", "" + intent.getIntExtra("plugged", 0)); /** 獲得電池健康度 */ map.put("health",""+ intent.getIntExtra("health",BatteryManager.BATTERY_HEALTH_UNKNOWN)); /** 獲得電池電壓 */ map.put("voltage", intent.getIntExtra("voltage", 0) + ""); /** 獲得電池溫度 */ map.put("temperature", intent.getIntExtra("temperature", 0) + ""); if (map!=null) { message = new Message(); message.obj = map; BatteryManagerActivity.handler1.dispatchMessage(message); } } } }

②通過動畫實現電池的遞增增加效果

現在開始 activity代碼了  布局有點復雜,后面我貼上源碼,大家在看吧 

零 動畫動起來

1.實例化動畫類

animImageView = new AnimImageView();

2.動畫類實現runnble 進行耗時操作

public class AnimImageView implements Runnable { @Override public void run() { BterryAnim(); battery_image.postDelayed(animImageView, 1000); } }

通過定義postDelayed 延時1秒后 又履行此線程

3.使用Matrix控制充電動畫

public void BterryAnim() { float[] stateArray = new float[] { 0.1f, 0.25f, 0.5f, 0.75f, 1f }; Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.battery_full); int height = bitmap.getHeight(); int width = bitmap.getWidth(); // 使用Matrix控制充電動畫 Matrix matrix = new Matrix(); matrix.postScale(stateArray[state], 1.0f); Bitmap newBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false); state = state + 1; battery_image.setImageBitmap(newBitmap); if (state == 5) { state = 0; } }



1初始化布局


private void init() { /** 獲得電池狀態對象 */ battery_Status = (TextView) findViewById(R.id.battery_status); /** 獲得電池運行狀態 */ battery_Run_Status = (TextView) findViewById(R.id.battery_health); /** 獲得電池電壓 */ battery_Voltage = (TextView) findViewById(R.id.battery_voltage); /** 獲得電池溫度 */ battery_Temperature = (TextView) findViewById(R.id.battery_temperature); /** 獲得電池技術 */ battery_Technology = (TextView) findViewById(R.id.battery_technology); // /** 回去電池運行時間 */ // battery_Time = (TextView) findViewById(R.id.boot_time); /** 獲得電池電量對象 */ battery_Level = (TextView) findViewById(R.id.battery); /** 獲得充電圖標 */ bty_Charging = (ImageView) findViewById(R.id.charging); /** 獲得充電 */ battery_image = (ImageView) findViewById(R.id.battery_image); }

2注冊廣播

其實我還在是在代碼中注冊的  1個意圖,1個廣播類 

/** * 注冊廣播 */ private void regReceiver() { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); registerReceiver(new BatteryReceiver(), filter); }
然后廣播類 通過handler類 將獲得的到電池信息 返回回來..........

3通過handler履行UI更新操作

/** * 接收BatteryReceiver廣播類 */ handler1 = new Handler() { @Override public void handleMessage(Message msg) { map = (Map<String, Object>) msg.obj; int health = Integer.parseInt(map.get("health").toString()); Log.i(TAG, health + ""); if (health == 2) { /** 設置電池運行狀態 */ battery_Run_Status.setText("正常"); } else { /** 設置電池運行狀態 */ battery_Run_Status.setText("1般"); } /** 設置電池電壓 */ battery_Voltage.setText("" + map.get("voltage") + "mV"); /** 設置電池溫度 */ double time = Double.parseDouble(map.get("temperature") + ""); battery_Temperature.setText("" + time / 10 + "°C"); /** 設置電池電量 */ max = Double.parseDouble(map.get("scale") + ""); min = Double.parseDouble(map.get("level") + ""); temp = (min / max); /** 設置電池技術 */ battery_Technology.setText("" + map.get("technology")); /** 設置啟動時間 */ // handler2 = new Handler() { // @Override // public void handleMessage(Message msg) { // battery_Time.setText("" + msg.obj.toString()); // } // }; /** 設置電池狀態 為USB充電 */ if (map.get("plugType").equals("2")) { // 顯示充電圖片 bty_Charging.setVisibility(View.VISIBLE); // 綁定顯示充電方式為USB battery_Status.setText("正在充電(USB)"); if (isAnimRun == false) { // 設置充電動畫 battery_image.postDelayed(animImageView, 1000); isAnimRun = true; } /** 設置電池狀態 為交換電充電 */ } else if (map.get("plugType").equals("1")) { // 顯示充電圖片 bty_Charging.setVisibility(View.VISIBLE); // 綁定顯示充電方式為交換電 battery_Status.setText("正在充電(交換電)"); if (isAnimRun == false) { // 設置充電動畫 battery_image.postDelayed(animImageView, 1000); isAnimRun = true; } /** 設置電池狀態 */ } else if (map.get("plugType").equals("0")) { // 隱藏充電圖標 bty_Charging.setVisibility(View.INVISIBLE); // 設置信息 battery_Status.setText("正在耗電"); if (isAnimRun == true) { // 結束充電動畫 battery_image.removeCallbacks(animImageView); // 設置電池剩余電量 setSize(temp * 100); // 動畫關閉 isAnimRun = false; } } setSize(temp * 100); System.out.println(temp + ":" + temp * 100); battery_Level.setText(temp * 100 + "%"); } }; }
點擊下載源碼

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 91国内精品久久久久怡红院 | 亚洲精品永久免费 | 久久国| 国产一区二区高清在线 | 国产一级毛片欧美视频 | 伊人免费在线观看 | 校园春色亚洲欧美 | freexxx性欧美hd丝袜 | 人人爱人人爽 | 国产极品美女在线 | 日本护士xxxx黑人巨大 | 羞羞动漫免费观看 | www.av在线播放 | 欧美性大战久久久久久久蜜桃 | 一区二区三区在线播放 | 永久在线毛片免费观看 | 国产精品高清一区二区三区不卡 | 精品欧美一区二区三区精品久久 | 欧美一区二区三区影院 | 亚洲日韩色图 | 欧美xx性| 精品视频一区二区三区四区五区 | 欧美性猛交乱大交xxxx | 老司机午夜精品视频在线观看免费 | 国产精品久久久久亚洲 | 国产精品v片在线观看不卡 国产精品v在线播放观看 | 国产亚洲高清在线精品不卡 | 一区二区三区视频免费观看 | 亚洲妇人成熟性成熟网站 | 欧美另类精品xxxx人妖换性 | 免费区欧美一级毛片 | 日本一级黄色大片 | 亚洲国产天堂久久综合图区 | 在线观看精品国产福利片尤物 | 久久久无码精品亚洲日韩按摩 | v片免费在线观看 | 精品成人资源在线观看 | 超乳w真性中出し冲田杏梨101 | 欧美孕交videosfree巨大 | 日本成人黄色网址 | 中文字幕首页 |