无法使用 R.id.drawable.* 动态加载。
解决方案1:
我将假设您的卡片图像的名称是:card0.png、card1.png ... card9.png 我建议您创建一个assets
目录(在res
目录内)。将卡片图像复制到assets
目录中。
import android.app.Activity;
import android.content.res.AssetManager;
import android.graphics.drawable.Drawable;
import java.io.InputStream;
import java.io.IOException;
public class YourActivity extends Activity {
//...
public Drawable loadAssetImage(String fileName) {
AssetManager assetMgr = this.getAssets();
try {
InputStream is = assetMgr.open(fileName);
Drawable d = Drawable.createFromStream(is, null);
return d;
}catch( IOException e ) {
// error...
return null;
}
}
}
该方法从目录loadAssetImage()
加载图像。assets
因此,现在您可以动态加载图像,因为它接受字符串参数。
请注意,目录名称必须是assets
。Android 允许直接(原始)访问assets
目录中的内部资源。
解决方案 2
public Drawable loadCardImage(int index) {
switch( index ) {
case 0:
return android.R.Card0;
case 1:
return android.R.Card1;
..
case 9:
return android.R.Card9;
}
return null;
}
您将从服务器收到卡片的索引。此函数将返回适当的资源。