Android widget 데스크 톱 위 젯 과 RemoteViewsService
8769 단어 안 드 로 이 드 기반
android
데스크 톱 플러그 인 은 주로 AppWidget
프레임 워 크 에 의존 합 니 다.관련 클래스:AppWidgetProvider
: BroadcastRecevier 하위 클래스, 업데이트 수신, 알림 삭제 AppWidgetProvderInfo
: AppWidget 관련 정보 (크기, 업데이트 빈도 등), xml 형식 AppWidgetManger
: AppWidget 관리 클래스, provider 에 메시지 보 내기 RemoteViews
: 다른 프로 세 스에 서 실행 할 수 있 는 클래스 로 provider 에 알림 을 보 낼 수 있 습 니 다.RemoteViewsService
: 원 격 서비스 어댑터 로 RemoteViews 를 요청 하고 RemoteViews 를 관리 할 수 있 는 서비스 입 니 다. RemoteViewsFactory
: 원 격 집합 보 기 를 채 울 수 있 는 RemoteViews Factory 를 제공 합 니 다.실현 절차
AndroidManifest
xml
파일 widget
레이아웃 Layout xml
파일 AppWidgetProvider
, 관련 논리 실현 <receiver android:name="ExampleAppWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info" />
receiver>
AppWidgetProvider
그 본질은 하나 BroadcastReceiver
인 데 그 중에서 APPWIDGET_UPDATE
는 필수 적 이 고 수신 broadcast
에 사용 된다.meta-data
는 AppWidgetProviderInfo
대응 하 는 자원 xml
의 위 치 를 발 표 했 는데 그 중에서 Widget
의 레이아웃 파일, 새로 고침 빈도, 최소 너비 와 높이 를 포함한다.res/xml/example_appwidget_info
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="40dp"
android:minHeight="40dp"
android:updatePeriodMillis="86400000"
android:previewImage="@drawable/preview"
android:initialLayout="@layout/example_appwidget"
android:configure="com.example.android.ExampleAppWidgetConfigure"
android:resizeMode="horizontal|vertical"
android:widgetCategory="home_screen">
appwidget-provider>
ExampleAppWidgetProvider:
public class ExampleAppWidgetProvider extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; iint appWidgetId = appWidgetIds[i];
// Create an Intent to launch ExampleActivity
Intent intent = new Intent(context, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// Get the layout for the App Widget and attach an on-click listener
// to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
// Tell the AppWidgetManager to perform an update on the current app widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
Configuration Activity
<activity android:name=".ExampleAppWidgetConfigure">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
intent-filter>
activity>
추가
xml
시 팝 업 widget
, 필터 추가 activity
가 필요 합 니 다.주의사항:
android.appwidget.action.APPWIDGET_CONFIGURE
의 result 를 되 돌려 야 한다.EXTRA_APPWIDGET_ID
후 onUpdate () 는 Widget 추가 시 호출 되 지 않 으 며, Activity 호출 Configuration Activity
은 Widget 업 데 이 트 를 완료 해 야 합 니 다.Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
mAppWidgetId = extras.getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.example_appwidget);
appWidgetManager.updateAppWidget(mAppWidgetId, views);
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();
집합 보기 RemoteViewsService
위의 방식 은 하나의 widget 을 위 한 것 입 니 다. 만약 우리 의 widget 에
AppWidgetManager.updateAppWidget()
, ListView
등 집합 보 기 를 포함 하고 있다 면, 우 리 는 하나의 클래스 Gridview
를 빌려 계승 RemoteViewsService
하고 복사 RemoteViewsService
를 되 돌려 야 합 니 다 onGetViewFactory
.public class StackWidgetRemoteViewsService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {}
}
참고: 앱 위 젯
Android 개발 앱 위 젯 상세 설명
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 모방 웨 이 보 @ 친구, \ # 화제 \ # 및 links 처리 방안웨 이 보 를 사용 할 때 우 리 는 모두 이 두 가지 기능 을 발견 할 것 이다. Span 와 를 통 해 이 루어 졌 다 고 생각 하기 쉽 지만 그 중에서 세부 적 인 처리 가 필요 하 다. 시 나 웨 이 보 가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.