如何在Android画布上通过滑动在图像视图中绘制图像集?

时间:2019-02-06 17:59:58

标签: java android android-glide

我正在生成一个具有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下载的图像,但不会在位图上绘制。

0 个答案:

没有答案