Bonjour à tous !

Je cherche à créer un AppWidget que l'utilisateur peut personnaliser. Pour l'instant, j'actualise l'apparence à chaque AppWidget.onUpdate et lors de l'allumage de l'écran, mais il y a parfois des petits bugs, ou des courts instants ou on voit l'apparence par défaut...

Y a-t-il une meilleure solution que celle que j'utilise (code ci-dessous) ? En décompillant une application, j'ai vu qu'elle utilisait un Canvas, mais le code décompillé étant illisible, je n'en sais pas vraiment plus...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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.decodeResource(context.getResources(), R.drawable.settings_icon);
            views.setBitmap(R.id.settings, "setImageBitmap", changeImageColor(bm, prefs.getInt(SettingsApparence.COULEUR_CLE, 0xFF000000)));
 
            bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.emploi_du_temps_icon);
            views.setBitmap(R.id.emploi_du_temps, "setImageBitmap", changeImageColor(bm, prefs.getInt(SettingsApparence.COULEUR_CALENDRIER, 0xFF000000)));
 
            appWidgetManager.updateAppWidget(appWidgetIds, views);
        }
    }
Merci de m'aider !

Syrll