AndroidWidget 실천 - Everyday Tips 개발(2)
4367 단어 android
어제 이루어진 것은 죽은 widgetwidget일 뿐입니다. 정보를 표시하는 역할 외에 사용자와 상호작용을 해야 합니다. 이것이 바로 우리가 해야 할 일입니다.
그림처럼 (녹화가 잘 안 되네) 아르바이트 같은 거 하고 얘기하자.
좀 재밌었죠?사실 쉬워요.
먼저 Widget에 클릭 이벤트를 추가합니다.
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 " , ";
}
}
}
허허 못 알아보면 어쩔 수 없지
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.