Android好用的桌面小工具,Android桌面小工具Widget功能实现
記錄一下Android桌面小工具的實現方式
1.注冊
首先需要在AndroidManifest.xml中進行注冊,類似Activity、Service的注冊方式:
android:name="android.appwidget.provider"
android:resource="${APP_WIDGET}" />
2.繼承AppWidgetProvider實現
public class MonitorWidgetProvider extends AppWidgetProvider{
public MonitorWidgetProvider() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) {
super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions);
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
}
@Override
public void onRestored(Context context, int[] oldWidgetIds, int[] newWidgetIds) {
super.onRestored(context, oldWidgetIds, newWidgetIds);
}
}
從這些可以覆蓋的方法名稱就可以知道其調用的位置
3.配置文件
注意這里的${APP_WIDGET}是對應的配置文件,我們需要在res/xml中創建:
<?xml version="1.0" encoding="utf-8"?>
android:initialLayout="@layout/view_monitor_sense"
android:previewImage="@mipmap/ic_launcher_sense"
android:minWidth="320dp"
android:minHeight="110dp"
android:updatePeriodMillis="60000"
android:resizeMode="horizontal|vertical"
android:minResizeWidth="250dp"
android:minResizeHeight="40dp">
解釋一下這些參數的意思:
android:initialLayout:對應的布局;
android:previewImage:桌面插件管理界面顯示的icon;
android:minWidth:最小寬度,這個寬度計算為:70*n-30,n代表的時在桌面上占用n個格子;
android:minHeight:最小高度,同上;
android:minResizeWidth:最小可調節寬度,結合上方的最小寬度實現后結果即,插件第一次拖拽到桌面時候占用五個格子,長按調節寬度,最小可調節到四個格子寬;
android:minResizeHeight:最小可調節高度,同上;
android:resizeMode:可調節方向,回調方法為onAppWidgetOptionsChanged(...);
android:updatePeriodMillis:給定間隔更新,單位毫秒,回調方法為onUpdate(...);
4.主動更新Widget
我們在注冊的時候就添加了action:
類似于發送靜態廣播,如下操作就可以主動更新Widget:
Intent intent = new Intent(MonitorWidgetProvider.APP_WIDGET_REFRESH);
sendBroadcast(intent);
注意,主動更新Widget中回調的方法為onReceive;
5.RemoteViews獲取布局元素
在Widget中需要使用RemoteViews類來操作布局元素,這里和Notication中元素的操作類似:
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.view_monitor_all);
基本的元素操作就不再贅述,記錄一下如何跳轉到對應App指定界面事件:
Intent intent = new Intent(MyApplication.getInstance(), MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(MyApplication.getInstance(), 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.ll_widget_all, pendingIntent);
以上就是實現一個Widget需要記錄的了,ok~
總結
以上是生活随笔為你收集整理的Android好用的桌面小工具,Android桌面小工具Widget功能实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7计算机序列号在哪里,win7系统
- 下一篇: C#调用Onnx模型