Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从资源中提取随机图像_C#_Android_Xamarin - Fatal编程技术网

C# 从资源中提取随机图像

C# 从资源中提取随机图像,c#,android,xamarin,C#,Android,Xamarin,嗨,我正在开发简单的android应用程序。应用程序仅包含一个图像视图。在“图像视图”上,单击“显示的图片应更改”。我的问题是如何通过索引获得资源列表或资源图像。例如,在drawable中,我有100个来自s1-s100的图像名称。我想用如下的随机函数显示其中一个: private void ImageView_Click(object sender, EventArgs e) { Random r = new Random();

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

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

谢谢

使用一个整数数组来存储所有可绘图项

int resIds = new int[]{R.drawable.s1, R.drawable.s2, .... R.drawable.s100};
然后计算随机指数,并从该指数中选取可提取指数

Random r = new Random();
int index = r.Next(resIds.length -1);
imageView.setImageResource(resIds[index]);

在values中创建任意arrays.xml文件,并将您的可绘图项添加到如下数组中


我知道你已经接受了答案,但这是一种非常无聊的方式来实现你想要的,因为它需要开发人员编写包含所有数百项的数组。实现它的一种更简单的方法是直接获取可绘制对象的标识符

我不确定Xamarin/C会是什么样子,但在Java上,您可以这样使用:

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

这是最优雅的解决方案,@Budius用Java给出,这是C#:

“Us.Us”是我的包裹名


我必须添加using语句才能访问R吗?您为什么接受这个答案?谁想制作这样一个整数数组?“Budius”的答案就是你要找的地方。最好的答案甚至还没有发布,因为你可以简单地列出可绘制文件夹的内容。它看起来像我的答案。只是说我的道歉。我想念你。谢谢
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);

        }