我正在使用这行代码获取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时得到的位图
那么如何获取gridview当前视图的位图,即点击checkresult按钮
答案 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传递给了这个方法并得到了当前的位图