使gridview的位图返回错误

时间:2017-08-19 07:18:43

标签: android gridview

我正在使用这行代码获取gridview的位图

aftershu = Bitmap.createBitmap(image_grid.getDrawingCache());

但是当我得到这个时,我没有得到gridview的当前视图,我在当前视图之前得到一个视图。

这是我的代码

image_grid.setDrawingCacheEnabled(true);


image_grid.buildDrawingCache(true);
   // Bitmap b = Bitmap.createBitmap(mGridView.getDrawingCache());
    beforeshu= Bitmap.createBitmap(image_grid.getDrawingCache());
    Bitmap x=getResizedBitmap(beforeshu,200,200);
    b1.setImageBitmap(x);

    Collections.shuffle(smallimages);
    image_grid.setAdapter(new SmallImageAdapter(this, smallimages));
    //  image_grid.setAdapter(new SmallImageAdapter());

    image_grid.setNumColumns((int) Math.sqrt(smallimages.size()));
    image_grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        int firstclick;
    int counter=0;
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int   position, long id) {
            counter++;
            if (counter % 2 == 0) {
                firstclick = position;
                Bitmap data1 = smallimages.get(position);

            } else {


                Bitmap swapImage = smallimages.get(position);
                smallimages.set(position, smallimages.get(firstclick));
                smallimages.set(firstclick, swapImage);

                image_grid.invalidateViews();


            }
            aftershu = Bitmap.createBitmap(image_grid.getDrawingCache());
        }

    });

这个beforeshu正在获得改组之前的正确位图,但是aftershu位图在网格视图中的最后一次交换之前返回图像视图

我在onclick之后插入了这一行,即点击checkresult但它总是返回beforeshu位图。

我的输出左图像是在随机播放之前右图像是我点击checkresult时得到的位图

[1]:

那么如何获取gridview当前视图的位图,即点击checkresult按钮

1 个答案:

答案 0 :(得分:0)

我通过stackoverflow

的方法解决了这个问题
 public static Bitmap getBitmapFromView(View view) {
           Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
           Canvas canvas = new Canvas(bitmap);
           Drawable bgDrawable = view.getBackground();
           if (bgDrawable!=null)
               bgDrawable.draw(canvas);
           else
               canvas.drawColor(Color.WHITE);
           view.draw(canvas);

           return bitmap;
       }

我将gridview传递给了这个方法并得到了当前的位图