我正在制作一个需要Object(玩家)的复合UI元素,并且我想为该玩家所玩的团队选择相应的图像(玩家对象具有其图像编号的字符串值。我的项目的资源文件夹如何在Android中以编程方式设置ImageViews源代码?
如何为每个玩家指定正确的源代码是否是写入大量if和elses(检查字符串值)并使用res.getDrawable(R.drawable .no1)等还是有一个更优雅的解决方案,我可以使用一个字符串以某种方式来指定源路径
我正在制作一个需要Object(玩家)的复合UI元素,并且我想为该玩家所玩的团队选择相应的图像(玩家对象具有其图像编号的字符串值。我的项目的资源文件夹如何在Android中以编程方式设置ImageViews源代码?
如何为每个玩家指定正确的源代码是否是写入大量if和elses(检查字符串值)并使用res.getDrawable(R.drawable .no1)等还是有一个更优雅的解决方案,我可以使用一个字符串以某种方式来指定源路径
我把字符串和图像之间的关系的地图:
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("blah", R.drawable.blah);
// etc...
然后,您可以使用setImageResource(int)
方法:
ImageView image;
image.setImageResource(map.get("blah"));
或者,如果字符串具有相同的名称比图像(如在之前的情况),您可以使用此方法加载资源: Android and getting a view with id cast as a string
如果我理解正确的话,你希望显示的字符串的图像资源。我在一个应用程序中这样做,用户可以从自定义ListPreference中选择一个图像,并将其显示在MainActivity布局中。可绘制资源ID作为与可绘制资源ID(字符串)示例匹配的字符串存储在SharedPreferences中:“@ drawable/logo_image”。我将ListPreference的值与:
SharedPreferences shared = getSharedPreferences("com.joshuariddle.recoveryworkscounter.settings", MODE_PRIVATE);
String logo_id = (shared.getString("pref_logo",""));
这会将可绘制资源返回为字符串,即@ drawable/logo_image。然后到绘制/图像插入到我的布局,我使用:
ImageView iv_logo = (ImageView) findViewById(R.id.imgLogo);
iv_logo.setImageResource(getResources().getIdentifier(logo_id, "drawable", "com.yourpackage"));
这将使用由下面返回一个ID(INT)方法返回的整型的ImageView的资源更改为新的绘制与setImageResource()代表com.yourpackage的绘制资源的字符串:
getResources().getIdentifier(logo_id, "drawable", "com.yourpackage")
您也可以使用相同的方法来更改使用可绘制如布局背景等其他资源,你只需要使用这个方法来获取ID为一个int:
getResources().getIdentifier("Resource Id String", "drawable", "com.yourpackage")
该死,打我26秒:) :) – 2011-03-14 02:09:33
@MohitDeshpande:hahahahahaha它总是发生。 – Cristian 2011-03-14 02:11:14
是的,这个工程很棒。我忘了R.etc返回整数:/谢谢! – blackaardvark 2011-03-14 03:56:05