編輯:關於Android編程
主程序,運行窗口小部件的時候調用的類。需要在manifest.xml中注冊。
package com.example.widgettext;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.widget.RemoteViews;
public class AppClockWidgetProvider extends AppWidgetProvider {
private static RemoteViews mRemoteViews;
private static Timer mTimer;
// mAppWidgetArray 保存窗口部件實例的數組
private static ArrayList mAppWidgetArray = new ArrayList();
// 當最後一個窗口部件實例被移除時調用
public void onDisabled(Context context) {
// TODO Auto-generated method stub
super.onDisabled(context);
stopTimerTask();
}
// 當第一個窗口部件實例被創建時調用
public void onEnabled(Context context) {
// TODO Auto-generated method stub
super.onEnabled(context);
startTimerTask(context);
}
// 窗口部件實例創建時調用
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
updateAppWidget(context, appWidgetManager, appWidgetIds);
addInstance(appWidgetIds);
}
// 窗口部件實例刪除時調用
public void onDeleted(Context context, int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onDeleted(context, appWidgetIds);
removeInstance(appWidgetIds);
}
// 更新單個窗口部件實例
public static void updateAppWidget(Context context,
AppWidgetManager appWidgeManger, int[] appWidgetIds) {
mRemoteViews = new RemoteViews(context.getPackageName(),
R.layout.activity_main);
MyTimeAdapter timeAdapter = new MyTimeAdapter();
String timeString = timeAdapter.formatTime();
mRemoteViews.setTextViewText(R.id.myTextView, timeString);
appWidgeManger.updateAppWidget(appWidgetIds, mRemoteViews);
}
// 更新所有窗口部件實例
public static void RefreshAllWidget(Context context) {
AppWidgetManager appWidgetManger = AppWidgetManager
.getInstance(context);
int instanceCount = mAppWidgetArray.size();
for (int i = 0; i < instanceCount; i++) {
int[] appWidgetIds = mAppWidgetArray.get(i);
updateAppWidget(context, appWidgetManger, appWidgetIds);
}
}
// 增加窗口部件實例
public static void addInstance(int[] appWidgetIds) {
if (mAppWidgetArray != null) {
mAppWidgetArray.add(appWidgetIds);
}
}
// 刪除窗口部件實例
public static void removeInstance(int[] appWidgetIds) {
if (mAppWidgetArray != null) {
mAppWidgetArray.remove(appWidgetIds);
}
}
// 開啟刷新窗口部件的定時器
public static void startTimerTask(final Context context) {
if (mTimer == null) {
mTimer = new Timer();
TimerTask mTimerTask = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
AppClockWidgetProvider.RefreshAllWidget(context);
}
};
mTimer.schedule(mTimerTask, 0, 1000);
}
}
// 關閉刷新窗口部件的定時器
public static void stopTimerTask() {
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
}
}
在主程序中用到的一個adapter
package com.example.widgettext;
import java.util.Calendar;
public class MyTimeAdapter {
private Calendar mCalendar;
public MyTimeAdapter() {
long time = System.currentTimeMillis();
mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(time);
}
public int getHour() {
return mCalendar.get(Calendar.HOUR_OF_DAY);
}
public int getMinutes() {
return mCalendar.get(Calendar.MINUTE);
}
public int getSecond() {
return mCalendar.get(Calendar.SECOND);
}
public String formatTime() {
String timeString = getHour() + : + getMinutes() + : + getSecond();
return timeString;
}
}
在res/xml文件夾下配置的一個文件,用來確定窗口小部件的大小。
在manifest.xml的內容(與運行activity的程序不同,這裡的action配置為receiver)
Android studio 出現 Unsupported major.minor version 52.0解決辦法
Android studio 出現 Unsupported major.minor version 52.0解決辦法 最近更新了Android studio
Android 輸入法 微信公眾號搜索定制版
1. 一個簡單的Android 輸入法(1) 使用Android Studio建立一個沒有Activity的項目,對於一個簡單的輸入法而言,MainActivity並不是
Android訂票系統訂票功能實現(特效點擊按鈕實現票數自動加減1)
要實現的效果是點擊加按鈕就購買分數自動加一,同時計算合計的總計 先共享一份colors.xml的數據,比較全面,可以根據需要添加
框架模式 MVC 在Android中的使用
算來學習Android開發已有2年的歷史了,在這2年的學習當中,基本掌握了Android的基礎知識。越到後面的學習越感覺困難,一來是自認為android沒啥可學的了(自認