Весь скриншот элементов списка сохранить как черный фон проблема в Android - PullRequest
0 голосов
/ 13 октября 2019

после того, как я просматриваю много запросов, я должен задать вопрос. Я пытаюсь сделать скриншот listvew, и после обмена. Но когда я делаю снимок экрана, фон не может установить цвет, просто быть черным. В чем проблема?

Я попытался создать растровое изображение и получить снимок экрана.

String mPath = Environment.getExternalStorageDirectory().toString() + "/" + "MYAPP00"+ now.getSeconds() +".JPEG";
lvUsers.setDrawingCacheEnabled(true);
Bitmap bitmap =getWholeListViewItemsToBitmap();
bitmap.setHasAlpha(false);
                          lvUsers.setDrawingCacheBackgroundColor(Color.RED);//--
lvUsers.setDrawingCacheEnabled(true);
File imageFile = new File(mPath);

FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 80;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
String filePath = imageFile.getPath();

Bitmap ssbitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
sharePath = filePath;
 if(!sharePath.equals("no")){
              Log.d("ffff",sharePath);
              File file = new File(sharePath);
    StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
          StrictMode.setVmPolicy(builder.build());
          Uri uri = Uri.fromFile(file);
          Intent intent = new Intent(Intent.ACTION_SEND);
          intent .setType("image/*");
          intent .putExtra(Intent.EXTRA_STREAM, uri);
                            }


 public Bitmap getWholeListViewItemsToBitmap() {

        ListView listview = this.mView.findViewById(R.id.lvUsers);
        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.buildDrawingCache();
            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;
    }

Я ожидаю, что на снимке экрана будет отображаться цвет фона.

...