android-在ImageView中让图像随机出现

问题描述

在ImageView中让图像随机出现

在imageview中有9个图像视图。我想让这几个图像在imageview中随机显示。我想实现点击刷新按钮,图像就会随机分配。但是每次点击后总是在俩个或三个imageview中重复出现相同的图片。程序中哪里有问题呢?

final int[] imageViews = {
            R.id.imgview11, R.id.imgview12, R.id.imgview13,
            R.id.imgview21, R.id.imgview22, R.id.imgview23,
            R.id.imgview31, R.id.imgview32, R.id.imgview33  };

    final int[] images = {
            R.drawable.i1, R.drawable.i2, R.drawable.i3,
            R.drawable.i4, R.drawable.i5, R.drawable.i6,
            R.drawable.i7, R.drawable.i8, R.drawable.empty };

    final ImageButton shuffle = (ImageButton) findViewById(R.id.new_puzzle);
    shuffle.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Random generator = new Random();
            //int n = 9;
            //n = generator.nextInt(n);
            //Random random = new Random(System.currentTimeMillis());
            for(int v : imageViews) {
                ImageView iv = (ImageView)findViewById(v);
                iv.setImageResource(images[generator.nextInt(images.length - 1)]);
            }
        }
    });

解决方案

用这段代码,容易实现。

shuffle.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) { 

            Random rng = new Random();
            List<Integer> generated = new ArrayList<Integer>();
            for (int i = 0; i < 9; i++)
            {
              while(true)
              {
                 Integer next = rng.nextInt(9) ;
                 if (!generated.contains(next))
                 {
                    generated.add(next);
                    ImageView iv = (ImageView)findViewById(imageViews[i]);
                    iv.setImageResource(images[next]);
                    break;
                 }
               }
            }
            }
        }

解决方案二:

List<int> list = Arrays.asList(images);
   Collections.shuffle(list);

int i=0;

for (int picture: list) {
    ImageView iv = (ImageView)findViewById(imageViews[i]);
    iv.setImageResource(picture);
    i++;
}
public class ShuffleArray {
    public static void shuffleArray(int[] a) {
        int n = a.length;
        Random random = new Random();
        random.nextInt();
        for (int i = 0; i < n; i++) {
            int change = i + random.nextInt(n - i);
            swap(a, i, change);
        }
    }

    private static void swap(int[] a, int i, int change) {
        int helper = a[i];
        a[i] = a[change];
        a[change] = helper;
    }

    public static void main(String[] args) {
        int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7 };
        shuffleArray(a);
        for (int i : a) {
            System.out.println(i);
        }
    }
}
时间: 2025-01-29 22:15:56

android-在ImageView中让图像随机出现的相关文章

imageview-关于android开发ImageView中的图片进行图形标记的添加处理

问题描述 关于android开发ImageView中的图片进行图形标记的添加处理 关于android开发,对ImageView中的图片进行图形标记的添加处理.如果有实例说明请列举一下,谢谢!急!急!急! 解决方案 问题不明白什么意思?可否说清楚点?或者给张图片示意一下. 解决方案二: 是"ImageView右下角有一个小图标,可以对小图标进行操作"的意思吗?

安卓开发之保存ImageView中的图片到本地相册

代码如下. private void saveImage(ImageView imageView){     imageView.setDrawingCacheEnabled(true);//开启catch,开启之后才能获取ImageView中的bitmap     Bitmap bitmap = imageView.getDrawingCache();//获取imageview中的图像     MediaStore.Images.Media.insertImage(getContentReso

android-在 Android 中保存图像获得图像的路径

问题描述 在 Android 中保存图像获得图像的路径 我使用下面的代码把一个图像保存到SD card中,但是如何获得保存了的图像的路径,因为我想使用这个路径给下一个 activity 中的 ImageView 设置图像. 我试着使用onActivityResult(),但是不能获得路径.因为如果你想在浏览器文件夹中打开一个 intent,onActivitySesult()会被摧毁,但是我不想打开 gallery 或者 intent,就能访问获取文件路径. 请大家帮忙解决这个问题,谢谢. Pi

android中圆角图像生成方法

  这篇文章主要介绍了android中圆角图像生成方法,涉及Android处理圆角图像的技巧,需要的朋友可以参考下 本文实例讲述了android中圆角图像生成方法.分享给大家供大家参考.具体分析如下: 在android开发中为了美观,常常要求ImageView中显示出圆角图像的效果,这个如何实现? 这里总结了网上的最优方法:将图像处理成圆角,然后在加载给ImageView显示,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public Bitmap

java-保存一个图像连同它的thuml然后显示在imageView中

问题描述 保存一个图像连同它的thuml然后显示在imageView中 我想保存一个从相机拍摄的照片,然后把照片和 Thumb 保存在 sdCard 中,然后把它们显示在一个 imageView 中.后来给出空指针错误. imageBitmap = Bitmap.createScaledBitmap(imageBitmap, 40, 40, false); 哪里出错了? { Intent intent = new Intent(android.provider.MediaStore.ACTION

android中圆角图像生成方法_Android

本文实例讲述了android中圆角图像生成方法.分享给大家供大家参考.具体分析如下: 在android开发中为了美观,常常要求ImageView中显示出圆角图像的效果,这个如何实现? 这里总结了网上的最优方法:将图像处理成圆角,然后在加载给ImageView显示,代码如下: public Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) { Bitmap output = Bitmap.createBitmap(bitmap.get

【Android开发】范例1-开启新线程获取网络图片并显示到ImageView中

利用之前学过的多线程处理技术,我们来写一个开启新线程获取网络图片并显示到ImageView中的实例. 在布局文件中加入一个ImageView图片控件: res/layout/main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t

Android实现GridView中ImageView动态变换的方法_Android

本文实例讲述了Android实现GridView中ImageView动态变换的方法.分享给大家供大家参考.具体如下: 使用YY影音的时候,发现点击GridView的某一个Item,Item里面的图标会在按下的时候发生变换,变成另外一个图片. 自己写了一个类似的demo,具体步骤如下: 1.创建一个包含Grid的Acitity 2.创建item.xml 里面包含一个imageview和一个textview 3.自定义一个adapter,从baseadapter继承 4.在getView中为每个im

Android实现GridView中ImageView动态变换的方法

本文实例讲述了Android实现GridView中ImageView动态变换的方法.分享给大家供大家参考.具体如下: 使用YY影音的时候,发现点击GridView的某一个Item,Item里面的图标会在按下的时候发生变换,变成另外一个图片. 自己写了一个类似的demo,具体步骤如下: 1.创建一个包含Grid的Acitity 2.创建item.xml 里面包含一个imageview和一个textview 3.自定义一个adapter,从baseadapter继承 4.在getView中为每个im