我正在生成一个具有2个TextViews和1个ImageView的ListView。 Glide通过此行代码通过网址在ImageView上设置图像。
GlideApp.with(context).load(res.get(position).getCardTileUrl())。into(cardTileImageView);
我想获取此ListView的屏幕截图,并且正在使用下面给出的代码来实现此目的。此代码适用于ListView,其中从资源中设置图像,而不是通过滑行从url下载图像。但是通过滑动,TextViews会在画布上绘制,而ImageView不会。
我尝试使用占位符,但该占位符已在画布上绘制。因此,这可能意味着即使已加载Glide加载的图像,实际上也不在ImageView上,并且我可以在屏幕上看到它们。
这是我用来将ListView绘制为位图的功能
public Bitmap getWholeListViewItemsToBitmap() {
ListView listview = deckListListView;
ListAdapter adapter = listview.getAdapter();
int itemscount = adapter.getCount();
int allitemsheight = 0;
List<Bitmap> bmps = new ArrayList<Bitmap>();
for (int i = 0; i < itemscount; i++) {
View childView = adapter.getView(i, null, listview);
childView.measure(View.MeasureSpec.makeMeasureSpec(listview.getWidth(),
View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED));
childView.layout(0, 0, childView.getMeasuredWidth(),
childView.getMeasuredHeight());
childView.setDrawingCacheEnabled(true);
childView.buildDrawingCache();
childView.setBackgroundColor(Color.parseColor("#FFFFFF"));
bmps.add(childView.getDrawingCache());
allitemsheight+=childView.getMeasuredHeight();
}
Bitmap bigbitmap =
Bitmap.createBitmap(listview.getMeasuredWidth(), allitemsheight,
Bitmap.Config.ARGB_8888);
Canvas bigcanvas = new Canvas(bigbitmap);
Paint paint = new Paint();
int iHeight = 0;
for (int i = 0; i < bmps.size(); i++) {
Bitmap bmp = bmps.get(i);
bigcanvas.drawBitmap(bmp, 0, iHeight, paint);
iHeight+=bmp.getHeight();
bmp.recycle();
bmp=null;
}
return bigbitmap;
}
我希望位图具有Glide下载的图像,但不会在位图上绘制。