从资源中挑选随机图像

时间:2016-12-21 19:07:28

标签: c# android xamarin

您好我正在开发简单的Android应用程序。应用程序仅包含图像视图。在图像视图上,应该更改显示的单击图片。我的问题是如何通过索引获取资源或资源图像列表。例如在drawable中我有来自s1-s100的100个图像名称。我想用这样的随机函数显示其中一个:

private void ImageView_Click(object sender, EventArgs e)
        {
            Random r = new Random();
            int index = r.Next() % 100;

            //code where I get picture on "index place" from my drawable folder.
        }

谢谢!

4 个答案:

答案 0 :(得分:1)

取一个整数数组来存储所有drawable

LOAD_LIST_SUCCESS

然后计算随机索引并从该索引中选择drawable

int resIds = new int[]{R.drawable.s1, R.drawable.s2, .... R.drawable.s100};

答案 1 :(得分:1)

在值中创建任何arrays.xml文件,并将您的drawable添加到像这样的数组

<integer-array name="images">
    <item>@drawable/drawable1</item>
    <item>@drawable/drawable2</item>
    <item>@drawable/drawable3</item>
</integer-array>

然后在您的活动类中添加此

TypedArray images = getResources().obtainTypedArray(R.array.images);

// get resource id by random index i
images.getResourceId(i, -1)

答案 2 :(得分:1)

我看到你已经接受了答案,但这是一种非常无聊的方式来实现你想要的东西,因为它需要开发人员用数百个项目来编写数组。实现它的一种更简单的方法是直接获取drawable的标识符。

我不确定Xamarin / C#会是怎样的,但是在Java上你会这样使用:

Random r = new Random();
int index = r.nextInt(100);
String name = "s" + index;
int drawableId = getResources().getIdentifier(
                    name,               // the name of the resource
                    "drawable",         // type of resource
                    getPackageName())); // your app package name
imageView.setImageResource(drawableId);

答案 3 :(得分:0)

这是最优雅的解决方案,@ Budius用Java来表示,这是C#:

private void ImageView_Click(object sender, EventArgs e)
        {
            Random r = new Random();
            int index = r.Next() % 36;
            String name = "s" + index;
            int drawableId = Resources.GetIdentifier(
                                name,               // the name of the resource
                                "drawable",         // type of resource
                                "Us.Us"); // your app package name
            imageView.SetImageResource(drawableId);

        }
  

“Us.Us”是我的包裹名称。