Android開発のアプリWidgetの詳細
6204 ワード
Android通知システムは大きな特色であり、その中の一つはApp Widgetである。アプリケーションの開発では、多くの場合、アプリWidgetを追加してデスクトップに表示し、ユーザーとのタイムリーな実行が可能です。
相互作用ここでは簡単にアプリWidgetを開発する流れを熟知しましょう。
アプリでアプリWidgetを作成するには、少なくとも以下のようなものが必要です。は、App Widget Provider Infoを作成して、App Widgetのメタデータを記述する必要がある。 は、自分のApp Widget ProviderがApp Widgetを更新するなどの操作を行う必要があります。 は、App Widgetのレイアウトを記述するためにレイアウトファイルを必要とする。 では、アプリWidgetを作成します。
一、Android Manifest.xmlでApWidgetを宣言します。
まず私たちはAndroid Manifest.xmlでApp Widget Providerを宣言する必要があります。フォーマットは以下の通りです
二、アプリWidget Provider Infoのメタデータを追加する。
アプリWidget Provider Infoは、App Widgetの本質的な特性を記述しています。例えば、App Widgetの更新期間、最小幅、長さ、使用されるレイアウトファイルは何ですか?
configration Activityなど。私たちはXMLでApWidget Provider Infoオブジェクトを定義する必要があります。このXMLファイルはres/xmlフォルダの下に保存するべきです。以下は一つの例です。
minWidth、minHeightは、App Widgetが占有する必要がある最小の空間を定義している。
udatePeriodMillisはどれぐらいの時間を定義しましたか?アプリWidgetは一回更新する必要があります。ここで定義されているのは大体の時間だけで、システムは正確な保証ができません。
previewImageは、ユーザがApp Widgetを選択する際に現実的なアイコンを定義しています。
initial Layoutは、アプリWidgetが使用するレイアウトファイルを定義しています。
configureは、ApWidgetが追加時に起動しなければならないconfigration Activityを定義し、構成を実行するために使用します。
resizeModeはスケーリングモードを定義しています。
三、アプリWidgetを作成するために使用するレイアウトファイル
ApWidgetを作成するには、レイアウト記述を提供するために、レイアウトファイルを作成しなければならない。Appwidgetがビューを作成するには、RemoteViewに基づいて作成する必要があります。効率などを考慮して、多くのコントロールが
RemoteViewでは支持されています。RemoteViewで使用できるUIコントロールは以下のようになります。
layout:FraameLayout、Linear Layout、RelativeLayout
widget:AnalogClock,Button,Chronometer,ImageButton,ImageView,Progess Bar,Text View,View Flist View,GridView,StocView,AdapterView Flipper
四、アプリWidget Providerを作成するサブクラス
前に述べたApp Widget ProviderはBroadcastReceiverです。はい、それは確かにBroadcastReceiverから継承されていますが、App Widgetの放送をより便利に処理するために実装されました。
アプリWidget Providerは、アプリWidgetの放送を受信すると、それぞれのタイプに応じて以下のいくつかの方法をトリガします。
onUpdate():App Widgetは更新が必要な時、この方法を触発します。私達はこの方法を書き直して、中で更新の操作を実現する必要があります。configration Activityが定義されていない場合は、ApWidgetを追加します。
を選択すると、この方法が起動されます。
one Delete(Conteet,int[]:AppWidgetがApp Widget Hostから削除された時に、この方法がトリガされます。
one Envaled:一つのアプリケーションに複数のApp Widgetを追加すると、最初のApp Widgetが追加された時にのみ、この方法が呼び出されます。
onDispabled:アプリケーションの最後のApp WidgetがApp Widget Hostから削除されると、この方法がトリガされます。
onReceive(Contect,Intent):これは実際にはBroadcastReceiverの中の方法であり、いずれかのBroadcastが受信されると、この方法を呼び出し、上記のコールバック方法の前に呼び出されます。
五、ConfigrationActivityを作成する(オプション)
アプリWidgetの追加が必要な場合は、いくつかの配置作業をすれば、Configration Activityを使用することができます。ConfigrationActivityを使うにはまず普通のActivityのようにAndroid Manifest.xmlの中で
宣言を行う:
1、アプリWidget IDを取得する
アンディロイド8.0以降は自分宛のアプリWidget Providerを受信できないので、追加が必要です。
以上はAndroid開発のApp Widgetの詳細です。AndroidアプリWidgetに関する詳細な資料は他の関連記事に注目してください。
相互作用ここでは簡単にアプリWidgetを開発する流れを熟知しましょう。
アプリでアプリWidgetを作成するには、少なくとも以下のようなものが必要です。
一、Android Manifest.xmlでApWidgetを宣言します。
まず私たちはAndroid Manifest.xmlでApp Widget Providerを宣言する必要があります。フォーマットは以下の通りです
<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>
アプリWidget Providerは、実際にはBroadcastReceiverであり、特定のBroadcastを受信することができます。メタタグは、App Widgetが使用するメタデータを記述しており、android:resourceは、メタデータを定義するxmlファイルの位置を宣言している。二、アプリWidget Provider Infoのメタデータを追加する。
アプリWidget Provider Infoは、App Widgetの本質的な特性を記述しています。例えば、App Widgetの更新期間、最小幅、長さ、使用されるレイアウトファイルは何ですか?
configration Activityなど。私たちはXMLでApWidget Provider Infoオブジェクトを定義する必要があります。この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>このラベルを使用してアプリWidget Provider Infoを定義する必要があります。例で使用した属性について説明します。minWidth、minHeightは、App Widgetが占有する必要がある最小の空間を定義している。
udatePeriodMillisはどれぐらいの時間を定義しましたか?アプリWidgetは一回更新する必要があります。ここで定義されているのは大体の時間だけで、システムは正確な保証ができません。
previewImageは、ユーザがApp Widgetを選択する際に現実的なアイコンを定義しています。
initial Layoutは、アプリWidgetが使用するレイアウトファイルを定義しています。
configureは、ApWidgetが追加時に起動しなければならないconfigration Activityを定義し、構成を実行するために使用します。
resizeModeはスケーリングモードを定義しています。
三、アプリWidgetを作成するために使用するレイアウトファイル
ApWidgetを作成するには、レイアウト記述を提供するために、レイアウトファイルを作成しなければならない。Appwidgetがビューを作成するには、RemoteViewに基づいて作成する必要があります。効率などを考慮して、多くのコントロールが
RemoteViewでは支持されています。RemoteViewで使用できるUIコントロールは以下のようになります。
layout:FraameLayout、Linear Layout、RelativeLayout
widget:AnalogClock,Button,Chronometer,ImageButton,ImageView,Progess Bar,Text View,View Flist View,GridView,StocView,AdapterView Flipper
四、アプリWidget Providerを作成するサブクラス
前に述べたApp Widget ProviderはBroadcastReceiverです。はい、それは確かにBroadcastReceiverから継承されていますが、App Widgetの放送をより便利に処理するために実装されました。
アプリWidget Providerは、アプリWidgetの放送を受信すると、それぞれのタイプに応じて以下のいくつかの方法をトリガします。
onUpdate():App Widgetは更新が必要な時、この方法を触発します。私達はこの方法を書き直して、中で更新の操作を実現する必要があります。configration Activityが定義されていない場合は、ApWidgetを追加します。
を選択すると、この方法が起動されます。
one Delete(Conteet,int[]:AppWidgetがApp Widget Hostから削除された時に、この方法がトリガされます。
one Envaled:一つのアプリケーションに複数のApp Widgetを追加すると、最初のApp Widgetが追加された時にのみ、この方法が呼び出されます。
onDispabled:アプリケーションの最後のApp WidgetがApp Widget Hostから削除されると、この方法がトリガされます。
onReceive(Contect,Intent):これは実際にはBroadcastReceiverの中の方法であり、いずれかのBroadcastが受信されると、この方法を呼び出し、上記のコールバック方法の前に呼び出されます。
五、ConfigrationActivityを作成する(オプション)
アプリWidgetの追加が必要な場合は、いくつかの配置作業をすれば、Configration Activityを使用することができます。ConfigrationActivityを使うにはまず普通のActivityのようにAndroid Manifest.xmlの中で
宣言を行う:
<activity android:name=".ExampleAppWidgetConfigure">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
ただ、ここでactionタイプを追加する必要があります。android.appwidget.actions.APPWIDGET_。CONFIGUREのintent-filterです。そして、AppWidget Provider Infoで声明を出す必要があります。
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
...
android:configure="com.example.android.ExampleAppWidgetConfigure"
... >
</appwidget-provider>
最後に、もちろんActivityを作成する必要があります。Configration Activityでは、必要な操作を実行します。1、アプリWidget IDを取得する
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
mAppWidgetId = extras.getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
2、必要な配置操作を行い、App Widget Managerのインスタンスを取得し、RemoteViewsを更新する。
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.example_appwidget);
appWidgetManager.updateAppWidget(mAppWidgetId, views);
3、Activity resultを設定し、Intentに戻ります。
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();
これでConfigration Activityが作成されました。アンディロイド8.0以降は自分宛のアプリWidget Providerを受信できないので、追加が必要です。
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);
上記の手順を実行したら、デスクトップに表示できるアプリWidgetが作成されました。以上はAndroid開発のApp Widgetの詳細です。AndroidアプリWidgetに関する詳細な資料は他の関連記事に注目してください。