欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開發(fā)之AppWidget詳解

 更新時間:2021年04月09日 17:19:43   作者:Bue_Sky  
這篇文章主要介紹了Android開發(fā)之AppWidget詳解,想了解桌面程序AppWidget的同學(xué)可以參考下

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

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

想要在應(yīng)用中創(chuàng)建一個AppWidget,至少需要以下幾樣?xùn)|西:

  1. 需要創(chuàng)建一個AppWidgetProviderInfo,來描述AppWidget的元數(shù)據(jù)。
  2. 需要實(shí)現(xiàn)一個自己的AppWidgetProvider對AppWidget進(jìn)行更新等操作。
  3. 需要布局文件來描述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實(shí)際上就是一個BroadcastReceiver,它接收特定的Broadcast。<meta-data>標(biāo)簽描述了AppWidget所使用的元數(shù)據(jù),android:resource則聲明了定義元數(shù)據(jù)的xml文件的位置。

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

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

configuration Activity等。我們需要在XML中來定義AppWidgetProviderInfo對象,這個XML文件應(yīng)該保存在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>需要使用這個標(biāo)簽來定義AppWidgetProviderInfo。下面對范例中使用到的屬性做下說明。

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

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

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

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。對,它其實(shí)確實(shí)是繼承自BroadcastReceiver,只是它為了更加方便的處理AppWidget的廣播進(jìn)行了封裝。

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

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

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

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

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

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

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

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

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

進(jìn)行聲明:

<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中進(jìn)行聲明:

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

最后,當(dāng)然是需要創(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、進(jìn)行必要的配置操作,獲取AppWidgetManager實(shí)例、更新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)建了一個可以在桌面進(jìn)行顯示的AppWidget了。

以上就是Android開發(fā)之AppWidget詳解的詳細(xì)內(nèi)容,更多關(guān)于Android AppWidget詳解的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android實(shí)現(xiàn)水波紋點(diǎn)擊效果

    Android實(shí)現(xiàn)水波紋點(diǎn)擊效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)水波紋點(diǎn)擊效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 基于RxJava框架實(shí)現(xiàn)獲取驗(yàn)證碼的輔助類

    基于RxJava框架實(shí)現(xiàn)獲取驗(yàn)證碼的輔助類

    這篇文章主要為大家詳細(xì)介紹了基于RxJava框架實(shí)現(xiàn)獲取驗(yàn)證碼的輔助類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android 開發(fā)隨手筆記之使用攝像頭拍照

    Android 開發(fā)隨手筆記之使用攝像頭拍照

    在Android中,使用攝像頭拍照一般有兩種方法, 一種是調(diào)用系統(tǒng)自帶的Camera,另一種是自己寫一個攝像的界面,本篇文章給大家介紹android開發(fā)隨手筆記之使用攝像頭拍照,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • Android崩潰日志收集和保存解析

    Android崩潰日志收集和保存解析

    這篇文章主要為大家介紹了Android崩潰日志收集和保存解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Android?Flutter異步編程指南分享

    Android?Flutter異步編程指南分享

    在?App?開發(fā)中,經(jīng)常會遇到處理異步任務(wù)的場景,如網(wǎng)絡(luò)請求、讀寫文件等。本文主要和大家介紹一下Flutter異步編程的相關(guān)知識,希望對大家有所幫助
    2023-04-04
  • Android?高德地圖POI定位地址搜索功能

    Android?高德地圖POI定位地址搜索功能

    這篇文章主要介紹了Android?高德地圖POI定位地址搜索功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-02-02
  • Flutter 如何設(shè)置App的主色調(diào)與字體

    Flutter 如何設(shè)置App的主色調(diào)與字體

    App 開發(fā)過程中,肯定希望給用戶帶來一致的體驗(yàn),這其中最基礎(chǔ)的就是色調(diào)、字體保持一致。在 Flutter 中,可以設(shè)置全局的主題色調(diào)和字體,從而在其他頁面引用主色調(diào)和字體,實(shí)現(xiàn)頁面展示層面的一致。
    2021-05-05
  • Android用 Mob 實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼實(shí)例

    Android用 Mob 實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼實(shí)例

    這篇文章主要介紹了Android用 Mob 實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android自定義實(shí)現(xiàn)循環(huán)滾輪控件WheelView

    Android自定義實(shí)現(xiàn)循環(huán)滾輪控件WheelView

    滾輪布局WheelView大家經(jīng)常使用,比如在選擇生日的時候,風(fēng)格類似系統(tǒng)提供的DatePickerDialog,這篇文章主要為大家詳細(xì)介紹了Android自定義實(shí)現(xiàn)循環(huán)滾輪控件WheelView,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android實(shí)現(xiàn)為ListView同時設(shè)置點(diǎn)擊時的背景和點(diǎn)擊松手之后的背景

    Android實(shí)現(xiàn)為ListView同時設(shè)置點(diǎn)擊時的背景和點(diǎn)擊松手之后的背景

    這篇文章主要介紹了Android實(shí)現(xiàn)為ListView同時設(shè)置點(diǎn)擊時的背景和點(diǎn)擊松手之后的背景,以實(shí)例形式較為詳細(xì)的分析了界面元素與功能的實(shí)現(xiàn)技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-02-02

最新評論