日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android应用小工具(窗口小部件)

發布時間:2025/4/16 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android应用小工具(窗口小部件) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Widget是可以在其他應用程序被嵌入和接收定期更新的微型應用程序視圖。

在創建一個應用程序窗口小部件,需要滿足以下條件:

AppWidgetProviderInfo--描述元數據為應用窗口小部件,如布局,更新頻率和AppWidgetProvider類,應在XML定義。

AppWidgetProvider類實現--定義的基本方法,編程與應用程序widget界面,基于廣播事件,當應用程序的Widget被更新,啟用,禁用和刪除將收到廣播。

查看布局,定義了應用程序插件的初始布局,在XML中定義

接下來是設置一個小部件的過程

首先在清單中聲明一個應用程序的Widget:

<receiver android:name="ExampleAppWidgetProvider" ><intent-filter><action android:name="android.appwidget.action.APPWIDGET_UPDATE" /></intent-filter><meta-data android:name="android.appwidget.provider"android:resource="@xml/example_appwidget_info" /> </receiver><intent-filter>元件必須包括一個<action>與元件android:name屬性,指定AppWidgetProvider接受ACTION_APPWIDGET_UPDATE廣播,必須顯式聲明只播出。

<meta-data>元素指定的AppWidgetProviderInfo資源需要以下屬性:

android:name指定元數據名稱,使用androi.appwidget.provider標識數據的AppWidgetProviderInfo描述符。

android:resource指定AppWidgetProviderInfo資源位置。

添加AppWidgetProviderInfo:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"android:minWidth="40dp"android:minHeight="40dp"android:updatePeriodMillis="86400000"android:previewImage="@drawable/preview"android:initialLayout="@layout/example_appwidget"android:configure="com.example.android.ExampleAppWidgetConfigure"android:resizeMode="horizontal|vertical"android:widgetCategory="home_screen"> </appwidget-provider> 創建 應用程序窗口小部件布局

必須在XML中定義一個初始布局為應用程序窗口小部件,保存至res/layout/目錄
窗口小部件支持以下布局類:

FrameLayout

LinearLayout

RelativeLayout

GridLayout

添加邊距應用小工具

1.設置應用程序的targetSdkkVersion14或更大

2.創建一個布局,如下:

<FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:padding="@dimen/widget_margin"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:background="@drawable/my_widget_background">…</LinearLayout></FrameLayout>3.創建兩個維度的資源,一個在res/values/, 一個在res/valus-v14/

res/values/dimens.xml:

<dimen name="widget_margin">8dp</dimen>res/values-v14/dimens.xml:

<dimen name="widget_margin">0dp</dimen> 使用的AppWidgetProvider類

當應用程序的Widget被更新,刪除,啟用以及禁用時,收到的AppWidgetProvider將調用以下方法:

onUpdate()---定義更新應用程序的間隔updatePeriodMills中的AppWidgetProviderInfo屬性

onAppWidgetOptionsChanged()---通過調用getAppWidgetOptions()以獲得尺寸范圍,將會返回一個Bundle包含OPTION_APPWIDGET_MIN_WIDTH, OPTION_APPWIDGET_MIN_HEIGHT, OPTION_APPWIDGET_MAC_WIDTH, OPTION_APPWIDGET_MAC_HEIGHT

onDeleted(Context, int[])---每一個App的Widget從應用的Widget主機中刪除的時間

onEnabled(Context)---當一個實例的應用程序的Widget是首次創建需要調用的

onDisabled(Context)---當應用的Widget的最后一個實例從應用的Widget的主機中刪除。
onReceivce(context, Intent)---每個廣播和上述的每個回調方法之前調用。通常默認實現,不需要調用。

最重要的回調是onUpdate()

public class ExampleAppWidgetProvider extends AppWidgetProvider {public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {final int N = appWidgetIds.length;// Perform this loop procedure for each App Widget that belongs to this providerfor (int i=0; i<N; i++) {int appWidgetId = appWidgetIds[i];// Create an Intent to launch ExampleActivityIntent intent = new Intent(context, ExampleActivity.class);PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);// Get the layout for the App Widget and attach an on-click listener// to the buttonRemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);views.setOnClickPendingIntent(R.id.button, pendingIntent);// Tell the AppWidgetManager to perform an update on the current app widgetappWidgetManager.updateAppWidget(appWidgetId, views);}} } 接收應用的Widget廣播Intent

AppWidgetProvider是一個簡易的類,可以重寫BroadcastReceiver或重寫onReceive(Context, Intent)回調,需要關心的Intent有:

ACTION_APPWIDGET_UPDATE

ACTION_APPWIDGET_DELETE

ACTION_APPWIDGET_ENABLED

ACTION_APPWIDGET_DISABLES

ACTION_APPWIDGET_OPTIONS_CHANGED


創建一個應用程序窗口小部件配置Activity

配置活動被宣布為Android清單文件中的正常活動,當被應用的Widget主機與發起ACTION_APPWIDGET_CONFIGURE行為,Activity需要接收這個Intent:

<activity android:name=".ExampleAppWidgetConfigure"><intent-filter><action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/></intent-filter> </activity>

Activity必須在AppWidgetProviderInfo的XML文件中聲明

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"...android:configure="com.example.android.ExampleAppWidgetConfigure"... > </appwidget-provider>
從配置活動更新應用程序的Widget

更新應用程序的Widget和關閉配置活動的程序的總結

1.首先,啟動活動的Intent應用的WidgetID:

Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) {mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID); }

2.執行應用程序窗口小部件配置

3.當配置完成后,通過調用得到AppWidgetManager的一個實例getInstance(Context)

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

4.更新應用的Widget使用RemoteViews通過調用布局updateAppWidget(int, RemoteViews)

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.example_appwidget); appWidgetManager.updateAppWidget(mAppWidgetId, views);5.最后創建返回Intent,隨著活動的結果集,完成活動
Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); setResult(RESULT_OK, resultValue); finish();


設置預覽圖像

在XML中設置:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"...android:previewImage="@drawable/preview"> </appwidget-provider> 使用App小工具

小工具使用RemoteViewsService,以顯示遠程數據,將提供的數據顯示在以下視圖類型中:

ListView/ GridView/ StackView/ AdapterViewFlipper

RemoteViewsService是允許一個遠程適配器請求服務RemoteViews的對象,RemoteViewsFactory是集合視圖之間的適配器的接口。

public class StackWidgetService extends RemoteViewsService {@Overridepublic RemoteViewsFactory onGetViewFactory(Intent intent) {return new StackRemoteViewsFactory(this.getApplicationContext(), intent);} }class StackRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory {//... include adapter-like methods here. See the StackView Widget sample.}






總結

以上是生活随笔為你收集整理的Android应用小工具(窗口小部件)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女裸体跪姿扒开屁股无内裤 | 精品国产乱码久久久久久1区2区 | 国产99久久久久 | 国产主播一区二区 | 亚洲欧美日韩在线一区 | 精品无码一区二区三区电影桃花 | 国产午夜av | 亚洲国产成人久久 | 波多野结衣 一区 | 亚洲第一视频 | 黄色一级片毛片 | 中文字幕日韩在线观看 | 国产在线免费视频 | 超碰伊人网 | 中文字幕免费高清在线观看 | 黄色污污视频软件 | 欧洲亚洲一区二区三区 | 波多野结衣在线影院 | 狠狠躁日日躁夜夜躁 | 国产毛片一区二区三区va在线 | 在线视频激情小说 | 成人h动漫精品一区二区器材 | 激情四月 | 欧美性生活免费视频 | 999久久久国产 | 福利视频免费观看 | 日日躁夜夜躁白天躁晚上躁91 | 亚洲第一视频在线 | 亚洲视频欧美视频 | 台湾三级伦理片 | 天天干狠狠操 | 欧美在线色视频 | 亚洲系列| 先锋影音一区二区 | 日韩天堂| 成年人毛片 | www.jizzcom | 精品少妇一区二区三区免费观 | 亚洲天堂免费 | 一本视频在线 | 90岁肥老奶奶毛毛外套 | 暴力调教一区二区三区 | 久久国产精品国语对白 | a级黄色网址 | 无遮挡在线观看 | 国产一级在线免费观看 | 丰满人妻一区二区三区四区 | 亚洲午夜精品在线观看 | 国产美女视频网站 | h片大全 | 国产奶头好大揉着好爽视频 | av福利网站 | 精品久久人人妻人人做人人 | 国精产品一区二区 | 男ji大巴进入女人视频 | 巨乳在线播放 | h片观看| 黄色免费网站视频 | 欧美成人xxxx | 欧美野外猛男的大粗鳮 | 日本爽妇网 | 直接看毛片 | 日本一区二区三区视频在线观看 | 少妇激情视频 | 成年人在线播放 | 一级黄色片免费看 | 国产伦精品免费视频 | 色播开心网| 天堂av在线中文 | 久久国产精品波多野结衣av | 高h喷汁呻吟3p | 国产午夜精品一区二区三区四区 | 欧美少妇一级片 | 岛国av一区二区三区 | 日本一区二区三区免费在线观看 | 男操女视频免费 | 亚洲色图插插插 | 婷婷亚洲综合五月天小说 | 国产伊人网 | 国产男女无套 | 色欲久久久天天天综合网精品 | 色婷婷激情五月 | 国产精品久久久久久久久久久久久久 | 天天综合永久入口 | 亚洲国产精品18久久久久久 | 亚洲中文字幕久久无码 | 日本在线播放 | 三上悠亚ed2k | 69亚洲| 青青青青青青草 | 在线网站av| 黑人操日本女人 | 毛片亚洲av无码精品国产午夜 | 亚洲经典自拍 | 久久av综合 | 日韩 欧美 中文 | 日韩免费在线视频 | 欧美一级二级视频 | 亚洲综合久|