編輯:關於Android編程
桌面控件是通過BroadCast的形式進行控制的,因此每個桌面控件都對應一個BroadCastReceiver.為了簡化桌面控件的開發,Android提供了一個AppWidgetProvider類,它就是BroadcastReceiver的子類.
為了開發桌面控件,開發者只要開發一個繼承AppWidgetProvider的子類,並重寫AppWidgetProvider不同的生命周期方法即可.
AppWidgetProvider提供如下4個不同的生命周期方法:
onUpdate():負責更新桌面的方法;實現桌面控件通常會考慮重寫該方法
onDeleted():當一個或多個桌面控件被刪除時回調該方法
onEnabled():當接收到ACTION_APPWIDGET_ENABLED BroadCast時回調該方法.
onDisabled():當接收到ACTION_APPWIDGET_DISABLED BroadCast時回調該方法.
一般來說,開發桌面控件只需要定義一個AppWidgetProvider的子類,並重寫它的OnUpdate()方法即可,重寫該方法的步驟如下:
創建一個RemoteViews對象,創建該對象時可以指定加載指定的界面布局文件
如果需要改變上一步所加載的界面布局文件的內容,可通過RemoteViews對象進行修改
創建一個ComponentName對象
調用AppWidgetManager更新桌面控件
以上步驟即:使用AppWidgetManager通過RemteViews來更新AppWidgetProvider的子類實例(需要將它包裝成COmponentName對象)
開發Widget步驟如下:
創建小插件的布局(layout)
創建小插件的屬性配置文件(xml):appwidget providerinfo
創建AppWidgetProvider並覆寫對應的生命周期方法
注冊AppWidgetProvider
AppWidgetProvider:
package org.crazyit.desktop; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.os.Handler; import android.os.Message; import android.widget.RemoteViews; /** * Description: *
site: crazyit.org *
Copyright (C), 2001-2014, Yeeku.H.Lee *
This program is protected by copyright laws. *
Program Name: *
Date: * @author Yeeku.H.Lee [email protected] * @version 1.0 */ public class LedClock extends AppWidgetProvider { private Timer timer = new Timer(); private AppWidgetManager appWidgetManager; private Context context; // 將0~9的液晶數字圖片定義成數組 private int[] digits = new int[] { R.drawable.su01, R.drawable.su02, R.drawable.su03, R.drawable.su04, R.drawable.su05, R.drawable.su06, R.drawable.su07, R.drawable.su08, R.drawable.su09, R.drawable.su10, }; // 將顯示小時、分鐘、秒鐘的ImageView定義成數組 private int[] digitViews = new int[] { R.id.img01, R.id.img02, R.id.img04, R.id.img05, R.id.img07, R.id.img08 }; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { System.out.println("--onUpdate--"); this.appWidgetManager = appWidgetManager; this.context = context; // 定義計時器 timer = new Timer(); // 啟動周期性調度 timer.schedule(new TimerTask() { public void run() { // 發送空消息,通知界面更新 handler.sendEmptyMessage(0x123); } }, 0, 1000); } private Handler handler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 0x123) { RemoteViews views = new RemoteViews(context .getPackageName(), R.layout.main); // 定義SimpleDateFormat對象 SimpleDateFormat df = new SimpleDateFormat( "HHmmss"); // 將當前時間格式化成HHmmss的形式 String timeStr = df.format(new Date()); for(int i = 0 ; i < timeStr.length() ;i++) { // 將第i個數字字符轉換為對應的數字 int num = timeStr.charAt(i) - 48; // 將第i個圖片的設為對應的液晶數字圖片 views.setImageViewResource(digitViews[i], digits[num]); } // 將AppWidgetProvider子類實例包裝成ComponentName對象 ComponentName componentName = new ComponentName(context, LedClock.class); // 調用AppWidgetManager將remoteViews添加到ComponentName中 appWidgetManager.updateAppWidget(componentName, views); } super.handleMessage(msg); } }; }
xml配置文件:
如何使用ES文件浏覽器的遠程管理。ES文件浏覽器是在android手機上常見的手機文件管理器,在基本的文件功能之上,它還支持開啟其他設備通過WiFi遠程連接
Github地址:https://github.com/coder-pig/AndroidStudio-Eat-Guide1.必須記住的快捷鍵:Ctrl+Shift+A
好不容易用臉萌做了一個萌萌的卡通頭像,點擊“存儲”按鈕之後卻不知道剛才制作的卡通頭像文件保存到哪裡去了?難道要白做了啊?當然不是的,
1.1 DalvikDalvik虛擬機是Android程序的虛擬機,是Android中Java程序的運行基礎。其指令集基於寄存器架構,執行其特有的文件格式—&