Android Widget実践---EverydayTips開発(2)
4317 ワード
昨日の続き
昨日実現したのは死んだwidget widgetで、情報を表示する役割のほかにユーザーと対話することです.これは私たちがしなければならないことです.
写真のように(录画のよくない)米工の何の更に言うようにしましょうほほほ
ちょっと面白かったかな?実は簡単です
まずWidgetにclickイベントを追加します.
widgetにイベントを登録するのは面倒ですが、実は暗黙的なintentを実現しているので、Manifestにこのintentを登録します.
そうそうJAvaは小さな処理をしました
分からないなら仕方ない
昨日実現したのは死んだwidget widgetで、情報を表示する役割のほかにユーザーと対話することです.これは私たちがしなければならないことです.
写真のように(录画のよくない)米工の何の更に言うようにしましょうほほほ
ちょっと面白かったかな?実は簡単です
まずWidgetにclickイベントを追加します.
package com.su.tipeveryday;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.provider.ContactsContract.CommonDataKinds.Note;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.TextView;
import android.widget.Toast;
public class TipEveryDayWidget extends AppWidgetProvider {
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onDeleted(context, appWidgetIds);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {// widget
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
// final int N = appWidgetIds.length;// widget ,
// Log.d("app", "onUpdate--->Ids===" + String.valueOf(N));
// for (int i = 0; i < N; i++) {// widget ( id )
// int appWidgetId = appWidgetIds[i];
// updateAppWidget(context, appWidgetManager, appWidgetId);//
// widget
// }
updateAppWidget(context, appWidgetManager, appWidgetIds);// widget
}
private void updateAppWidget(Context context,
AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// 1.1, activity intent
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
String tip = Tips.getTips();// Tips.java
views.setTextViewText(R.id.textViewWidget, tip);//
Intent intent = new Intent(context, TipEveryDayActivity.class);// Activity
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
intent, 0);
views.setOnClickPendingIntent(R.id.textViewWidget, pendingIntent);
Intent intent2 = new Intent("com.su.ontipclick");// ,
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0,
intent2, 0);
views.setOnClickPendingIntent(R.id.buttonChange, pendingIntent2);
appWidgetManager.updateAppWidget(appWidgetIds, views);// widget
}
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.su.ontipclick")) {
Toast.makeText(context, "OK!!!!!", Toast.LENGTH_LONG).show();//
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);// appwidget
String tip = Tips.getTips();// Tips.java
remoteViews.setTextViewText(R.id.textViewWidget, tip);
AppWidgetManager appWidgetManager = AppWidgetManager
.getInstance(context);// appwidget , appwidget
ComponentName componentName = new ComponentName(context,
TipEveryDayWidget.class);// appwidget
appWidgetManager.updateAppWidget(componentName, remoteViews);
}
super.onReceive(context, intent);
}
}
widgetにイベントを登録するのは面倒ですが、実は暗黙的なintentを実現しているので、Manifestにこのintentを登録します.
<receiver android:name=".TipEveryDayWidget"
android:label="AAAAAAAATip">
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="com.su.ontipclick"></action><!-- -->
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_config" /><!-- widget , copy -->
</receiver>
そうそうJAvaは小さな処理をしました
package com.su.tipeveryday;
public class Tips {
public static Boolean flagBoolean =true;
public static String getTips() {
if (flagBoolean) {
flagBoolean = false;
return " , ";
}
else {
flagBoolean=true;
return " , ";
}
}
}
分からないなら仕方ない