Androidで肌の入れ替え機能を実現

2590 ワード

public static void setWidgetTheme(Context context, View view, String resName){ String pkgName = PreferenceManager.getDefaultSharedPreferences(context).getString(PREF_KEY_THEME_PACKAGE, context.getPackageName()); Resources themeResources = null ; try { themeResources = context.getPackageManager().getResourcesForApplication(pkgName); } catch (NameNotFoundException e) { e.printStackTrace(); } if (themeResources == null ){ try { pkgName = context.getPackageName(); themeResources = context.getPackageManager().getResourcesForApplication(pkgName); saveThemePackageName(context, pkgName); } catch (NameNotFoundException e) { e.printStackTrace(); } } if (themeResources == null ){ return ; } try { int resource_id = themeResources.getIdentifier(resName, "drawable" , pkgName); if (resource_id != 0 ){ Drawable drawable = themeResources.getDrawable(resource_id); if (view != null ){ view.setBackgroundDrawable(drawable); } else { Log.w(TAG, "View is null! resName = " + resName); } } } catch (Resources.NotFoundException e){ e.printStackTrace(); } }