после того, как я просматриваю много запросов, я должен задать вопрос. Я пытаюсь сделать скриншот 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;
}
Я ожидаю, что на снимке экрана будет отображаться цвет фона.