Как нарисовать изображение, установленное в виде изображения, скользя по холсту в Android? - PullRequest
0 голосов
/ 06 февраля 2019

Я генерирую ListView, который имеет 2 TextViews и 1 ImageView.Изображение в ImageView настраивается Glide через URL с этой строкой кода.

GlideApp.with (context) .load (res.get (position) .getCardTileUrl ()).into (cardTileImageView);

Я хочу сделать снимок экрана этого ListView, и я использую приведенный ниже код для достижения этой цели.Этот код работает для ListView, где изображения были установлены из ресурса вместо загруженных изображений из URL через glide.Но при скольжении 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, но они не отображаются на растровом изображении.

...