Android AppWidget可由用户自定义

时间:2015-06-06 15:55:53

标签: android android-appwidget

我有一个问题需要制作一个可自定义的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 []中)重新出现...... 我怎么能这样做?

0 个答案:

没有答案