chi*_*kar 6 android android-image
我想显示我存储在res/drawable中的一堆图像中的随机图像.
我知道的唯一技术是,如果您知道其资源ID,则访问特定图像.有没有办法通过使用文件名或其他东西(可以在运行时构建)访问图像?
我想在运行时随机选择一个图像.任何建议/想法赞赏:)
谢谢Chinmay
rha*_*ter 18
我意识到这是一个非常古老的问题,但希望为任何Google员工提供一个好的解决方案.
按名称访问资源的效率远低于id.资源系统的重点在于您不必解析名称,而是可以使用ID.
您需要做的是使用阵列资源类型.按照我的简单步骤!我制作随机图片......好玩!
创建一个包含要从中选择的所有图像的阵列资源.我把它放在我的res/values/arrays.xml文件中,但它真的可以去任何地方.
<array name="loading_images">
<item>@drawable/bg_loading_1</item>
<item>@drawable/bg_loading_2</item>
<item>@drawable/bg_loading_3</item>
<item>@drawable/bg_loading_5</item>
<item>@drawable/bg_loading_6</item>
<item>@drawable/bg_loading_7</item>
<item>@drawable/bg_loading_8</item>
</array>
Run Code Online (Sandbox Code Playgroud)接下来,得到了TypedArray来自Resources并用它来选择一个随机图像.
TypedArray images = getResources().obtainTypedArray(R.array.loading_images);
int choice = (int) (Math.random() * images.length());
mImageView.setImageResource(images.getResourceId(choice, R.drawable.bg_loading_1));
images.recycle();
Run Code Online (Sandbox Code Playgroud)利润!
您也可以按名称访问资源,如果您知道资源的名称或可以根据某些预定义的命名方案派生它们,则这可能是解决问题的可行方法。
您必须使用类的getIdentifier方法将名称映射到标识符Resources。
String name = "resource" + rng.nextInt(count);
int resource = getResources().getIdentifier(name, "drawable", "com.package");
Run Code Online (Sandbox Code Playgroud)
此方法的文档说:
注意:不建议使用此功能。按标识符检索资源比按名称检索资源要有效得多。
的确如此,但是如果您在对性能不敏感的代码中进行操作,则不必担心。
另外,如果您不介意以XML列出资源,则可以创建一个有类型的数组,然后可以从中随机选择。
| 归档时间: |
|
| 查看次数: |
8642 次 |
| 最近记录: |