App Widget 시작
안드로이드 스튜디오
프로젝트 최상단 [app] 오른쪽 마우스 클릭 !
NEW > Widget > App Widget 선택
자동으로 앱위젯을 생성해 준다.
앱위젯 설정
매니페스트
매니페스트에 receiver 로 등록이 되어야 한다. 역시 자동으로 생성되고,
res > xml 폴더 밑에도 자동으로 provider 파일을 생성해준다.
XML > appwidget-provider
initialKeyguardLayout : 잠금화면에서 보여질 레이아웃
initialLayout : 홈화면에서 보여질 레이아웃
minHeight : 최소 높이
minWidth : 최소 넓이
previewImage : 위젯 선택할 때 나타날 이미지
resizeMode : 가로 세로 리사이즈 모드
updatePeriodMillis : 업데이트 주기 (30분 밑으로는 업데이트 설정이 안됩니다)
configure : 설정 액티비티
widgetCategory : 위젯이 보여질 카테고리 (홈스크린, 잠금화면)
AppWidgetProvider
public class MyAppWidget extends AppWidgetProvider {
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
CharSequence widgetText = context.getString(R.string.appwidget_text);
PreferenceTool tool = new PreferenceTool(context);
String getStr = tool.getString(String.valueOf(appWidgetId), widgetText.toString());
Log.i(Const.TAG, "updateAppWidget() get Preference String : " + getStr + ", widgetId: " + appWidgetId);
// Construct the RemoteViews object
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_app_widget);
views.setTextViewText(R.id.appwidget_text, getStr);
Intent intent = new Intent(context, WidgetConfigActivity.class);
intent.setData(Uri.parse(String.valueOf(appWidgetId)));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.appwidget_text, pendingIntent);
// Instruct the widget manager to update the widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
}
@Override
public void onEnabled(Context context) {
// Enter relevant functionality for when the first widget is created
}
@Override
public void onDisabled(Context context) {
// Enter relevant functionality for when the last widget is disabled
}
}
onUpdate : 위젯이 업데이트 신호를 받을 때 호출 되는 함수
onEnabled : 위젯을 처음 활성화 했을 때 호출 되는 함수
onDisabled : 위젯이 비활성화 될 때 호출 되는 함수
onReceived : Broadcast 메시지를 받을 때 호출되는 함수
출처 : https://developer.android.com/guide/topics/appwidgets/index.html?hl=ko#MetaData
'안드로이드 > AppWidget' 카테고리의 다른 글
AppWidget -02 (0) | 2017.08.17 |
---|