2010-11-29 9 views
0

간단한 위젯을 개발 중이며 런타임에 png 파일 (또는 이와 유사한)에서 백그라운드를 변경하고 싶습니다. 이것이 가능한가요, 그렇다면 어떻게 할 수 있습니까? 누군가 간단한 예제를 제공 할 수 있습니까? 같은런타임시 위젯 배경 변경

감사

답변

3

사용 무언가 :

views.setImageViewBitmap(R.id.widgetBackground, ((BitmapDrawable)context.getResources().getDrawable(R.drawable.YOUR_BACKGROUND)).getBitmap()); 

파일 YOUR_BACKGROUND은 PNG입니다.

views 개체의 인스턴스는 RemoteViews입니다.

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 

을 그리고 이러한 변경 후 위젯을 업데이트하는 것을 잊지 마세요 : 다음을 사용하여 인스턴스를 얻을 수 있습니다.

AppWidgetManager mgr = AppWidgetManager.getInstance(context); 
ComponentName me = new ComponentName(context, Widget.class); 
mgr.updateAppWidget(me, views); 
+1

어떤 용도로 사용하고 계십니까? LinearLayout에서 시도해 보니 안드로이드가 나에게 불어났다 : – NPike

+0

위젯 레이아웃이 ListView 인 경우 widget로드 문제 – Choletski

1

RemoteViews에서 setInt 또는 다른 방법을 사용하여 배경 이미지 또는 다른 값을 설정할 수 있습니다.

remoteViews.setInt (R.id.widget_layout, "setBackgroundResource", R.drawable.myshape_red);

위 샘플은 위젯을 다른 드로어 블 모양으로 변경하는 샘플입니다. 레이아웃 참조가 아니라 "id"를 전달해야합니다.

2.1에서는 작동하지 않습니다.

+0

이것은 작동하지 않고 다음 경고를 throw합니다. W/AppWidgetHostView (152) : android.widget.RemoteViews $ ActionException : android.widget.ImageView가 RemoteViews에서 메서드를 사용할 수 없습니다. setBackgroundResource (int) – Egor

+0

내가 여기서 그 일을 할 때 일한다. https://github.com/trajano/GasPrices/blob/master/src/main/java/net/trajano/gasprices/GasPricesWidgetProvider.java (27 ~ 46 줄 참조) –

+0

이제 Android 2.1에서 시도해 보았습니다. 일했다. 그 전에 안드로이드 1.6에서 그것을 시도하고 작동하지 않았다. API 레벨 3 이후에이 메소드를 사용할 수 있다고 설명서에서 밝히기 때문에 이상합니다. – Egor