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();
}
}