电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Android開發(fā)之AppWidget詳解

瀏覽:13日期:2022-09-19 16:39:29

Android通知系統(tǒng)是它的一大特色,而其中,AppWidget是其中一個亮點。在開發(fā)應用的中,很多時候可以為其添加一個AppWidget顯示在桌面中,及時方便的與用戶進行

交互。這里就簡單的熟悉一下開發(fā)一個AppWidget的流程吧。

想要在應用中創(chuàng)建一個AppWidget,至少需要以下幾樣東西:

需要創(chuàng)建一個AppWidgetProviderInfo,來描述AppWidget的元數(shù)據(jù)。 需要實現(xiàn)一個自己的AppWidgetProvider對AppWidget進行更新等操作。 需要布局文件來描述AppWidget的布局。

那么,下面就開始創(chuàng)建一個AppWidget吧。

一、在AndroidManifest.xml中聲明一個AppWidget

首先我們需要在AndroidManifest.xml中聲明AppWidgetProvider。格式如下:

<receiver android:name='MyAppWidgetProvider' > <intent-filter> <action android:name='android.appwidget.action.APPWIDGET_UPDATE' /> </intent-filter> <meta-data android:name='android.appwidget.provider' android:resource='@xml/my_appwidget_info' /> </receiver>

可以看出AppWidgetProvider實際上就是一個BroadcastReceiver,它接收特定的Broadcast。<meta-data>標簽描述了AppWidget所使用的元數(shù)據(jù),android:resource則聲明了定義元數(shù)據(jù)的xml文件的位置。

二、添加AppWidgetProviderInfo元數(shù)據(jù)

AppWidgetProviderInfo描述了AppWidget的本質(zhì)特性,例如,AppWidget更新的周期,最小的寬度、長度,所使用的布局文件是什么,以及添加AppWidget需要啟動的

configuration Activity等。我們需要在XML中來定義AppWidgetProviderInfo對象,這個XML文件應該保存在res/xml文件夾下。下面是一個范例:

<appwidget-provider xmlns:android='http://schemas.android.com/apk/res/android' android:minWidth='294dp' android:minHeight='72dp' android:updatePeriodMillis='86400000' android:previewImage='@drawable/preview' android:initialLayout='@layout/example_appwidget' android:configure='com.example.android.MyAppWidgetConfigure' android:resizeMode='horizontal|vertical'> </appwidget-provider>

<appwidget-provider>需要使用這個標簽來定義AppWidgetProviderInfo。下面對范例中使用到的屬性做下說明。

minWidthminHeight定義了AppWidget需要占據(jù)的最小的空間。

updatePeriodMillis定義了大概多久AppWidget需要更新一次,這里定義的只是一個大概的時間,系統(tǒng)不能做出精確的保證。

previewImage定義了在用戶選擇AppWidget時做現(xiàn)實的圖標。

initialLayout定義了AppWidget所使用的布局文件。

configure定義了AppWidget在添加的時候需要啟動的configuration Activity 用于執(zhí)行配置的工作。

resizeMode定義了縮放模式。

三、創(chuàng)建AppWidget所使用的布局文件

在創(chuàng)建AppWidget時必須創(chuàng)建一個布局文件,為其提供布局描述。AppWidget創(chuàng)建視圖時,需要根據(jù)RemoteViews來創(chuàng)建。而出于效率等因素的考慮,很多控件在

RemoteViews中是被支持的。以下列出能在RemoteViews中使用的UI控件:

layout : FrameLayout , LinearLayout , RelativeLayout

widget : AnalogClock , Button , Chronometer , ImageButton , ImageView , ProgressBar , TextView , ViewFlipper , ListView , GridView , StackView , AdapterViewFlipper

四、創(chuàng)建一個AppWidgetProvider的子類

前面提到過AppWidgetProvider就是一個BroadcastReceiver。對,它其實確實是繼承自BroadcastReceiver,只是它為了更加方便的處理AppWidget的廣播進行了封裝。

AppWidgetProvider在接收到AppWidget的廣播的時候,會根據(jù)類型分別觸發(fā)以下幾個方法:

onUpdate() : 當AppWidget需要更新時,會觸發(fā)這個方法,我們需要重寫這個方法,在里面實現(xiàn)更新的操作。如果沒有定義configuration Activity,那么在添加一個AppWidget

時,也會觸發(fā)此方法。

onDelete(Context , int[] ):當AppWidget從AppWidgetHost中刪除時,會觸發(fā)此方法。

onEnabled(Context ):如果為一個應用添加了多個AppWidget,只有在第一個AppWidget被添加時,此方法才會被調(diào)用。

onDisabled(Context ):當一個應用的最后一個AppWidget從AppWidgetHost中刪除時,會觸發(fā)此方法。

onReceive(Context , Intent ):這實際上就是BroadcastReceiver中的方法,當任何一個Broadcast被接收到時,會調(diào)用此方法,并且會在以上回調(diào)方法之前被調(diào)用。

五、創(chuàng)建一個ConfigurationActivity(可選)

如果需要AppWidget添加的時候做一些配置工作,就可以使用Configuration Activity。要使用ConfigurationActivity首先需要像普通的Activity一樣在AndroidManifest.xml中

進行聲明:

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

只是這里需要添加action類型為android.appwidget.action.APPWIDGET_CONFIGURE的intent-filter。然后,需要在AppWidgetProviderInfo中進行聲明:

<appwidget-provider xmlns:android='http://schemas.android.com/apk/res/android' ... android:configure='com.example.android.ExampleAppWidgetConfigure' ... > </appwidget-provider>

最后,當然是需要創(chuàng)建Activity了,在Configuration Activity中,需要執(zhí)行一些必要的操作:

1、獲取AppWidget ID

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

2、進行必要的配置操作,獲取AppWidgetManager實例、更新RemoteViews

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.example_appwidget); appWidgetManager.updateAppWidget(mAppWidgetId, views);

3、設(shè)置Activity result,并且返回一個Intent。

Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); setResult(RESULT_OK, resultValue); finish();

這樣一個就創(chuàng)建好了一個Configuration Activity了。

注意android8.0以后無法收到發(fā)給自己的AppWidgetProvider,需要添加

intent.setComponent(new ComponentName(context,CacheProvider.class));

Intent intent = new Intent();intent.setAction(ACTION_CACHE_CLEAN);intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);intent.setComponent(new ComponentName(context,CacheProvider.class));PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);remoteViews.setOnClickPendingIntent(R.id.tv_clean, pendingIntent);

執(zhí)行完上面的步驟,就已經(jīng)創(chuàng)建了一個可以在桌面進行顯示的AppWidget了。

以上就是Android開發(fā)之AppWidget詳解的詳細內(nèi)容,更多關(guān)于Android AppWidget詳解的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Android
相關(guān)文章:
主站蜘蛛池模板: 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 威廉希尔WilliamHill·足球(中国)体育官方网站 | 预制直埋蒸汽保温管-直埋管道-聚氨酯发泡保温管厂家 - 唐山市吉祥保温工贸有限公司 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 家庭教育吧-在线家庭教育平台,专注青少年家庭教育 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 同学聚会纪念册制作_毕业相册制作-成都顺时针宣传画册设计公司 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 真空包装机-诸城市坤泰食品机械有限公司 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 机床主轴维修|刀塔维修|C轴维修-常州翔高精密机械有限公司 | 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 深圳市简易检测技术有限公司| 上海logo设计| 飞利浦LED体育场灯具-吸顶式油站灯-飞利浦LED罩棚灯-佛山嘉耀照明有限公司 | 好物生环保网、环保论坛 - 环保人的学习交流平台 | 在线PH计-氧化锆分析仪-在线浊度仪-在线溶氧仪- 无锡朝达 | 菲希尔X射线测厚仪-菲希尔库伦法测厚仪-无锡骏展仪器有限责任公司 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 广域铭岛Geega(际嘉)工业互联网平台-以数字科技引领行业跃迁 | 物和码官网,物和码,免费一物一码数字化营销SaaS平台 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 环球周刊网| 全自动定氮仪-半自动凯氏定氮仪厂家-祎鸿仪器 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 电缆接头_防水接头_电缆防水接头_防水电缆接头_上海闵彬 | 荣事达手推洗地机_洗地机厂家_驾驶式扫地机_工业清洁设备 |