我有一个问题需要制作一个可自定义的AppWidget:我不知道该怎么做......我试着用这个函数定期更新外观:
public static void updateApparence(Context context)
{
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
for(int i = 0 ; i < widgetLayoutIds.length ; i++)
{
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, appWidgetProvidersClass[i]));
RemoteViews views = new RemoteViews(context.getPackageName(), widgetLayoutIds[i]);
views.setInt(R.id.widget_background, "setBackgroundColor", prefs.getInt(SettingsApparence.BACKGROUND_COLOR, 0xFFFFFFFF));
views.setInt(R.id.matiere, "setTextColor", prefs.getInt(SettingsApparence.COULEUR_MATIERE, 0xFF666666));
views.setInt(R.id.horaires, "setTextColor", prefs.getInt(SettingsApparence.COULEUR_HORAIRES, 0xFF888888));
views.setInt(R.id.salle, "setTextColor", prefs.getInt(SettingsApparence.COULEUR_SALLE, 0xFF888888));
Bitmap bm = BitmapFactory.decodeFile(context.getFilesDir() + PATH_CLE);
if(bm == null)
{
bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.settings_icon);
bm = changeImageColor(bm, prefs.getInt(SettingsApparence.COULEUR_CLE, 0xFF000000));
}
views.setBitmap(R.id.settings, "setImageBitmap", bm);
bm = BitmapFactory.decodeFile(context.getFilesDir() + PATH_CALENDRIER);
if(bm == null)
{
bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.calendrier_icon);
bm = changeImageColor(bm, prefs.getInt(SettingsApparence.COULEUR_CALENDRIER, 0xFF000000));
}
views.setBitmap(R.id.emploi_du_temps, "setImageBitmap", bm);
appWidgetManager.updateAppWidget(appWidgetIds, views);
}
}
但有时,原始外观(在R.layout.widget中,在appWidgetProvidersClass []中)重新出现...... 我怎么能这样做?