我有一個LinearLayout和一個RecyclerView正下方。在谷歌上搜索,我發現了一些代碼來截取RecyclerView(爲了真實,我不明白它是如何工作的)。這裏的代碼:截取LinearLayout和RecyclerView
public static Bitmap getRecyclerViewScreenshot(RecyclerView view) {
int size = view.getAdapter().getItemCount();
RecyclerView.ViewHolder holder = view.getAdapter().createViewHolder(view, 0);
view.getAdapter().onBindViewHolder(holder, 0);
holder.itemView.measure(View.MeasureSpec.makeMeasureSpec(view.getWidth(), View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
holder.itemView.layout(0, 0, holder.itemView.getMeasuredWidth(), holder.itemView.getMeasuredHeight());
Bitmap bigBitmap = Bitmap.createBitmap(view.getMeasuredWidth(), holder.itemView.getMeasuredHeight() * size,
Bitmap.Config.ARGB_8888);
Canvas bigCanvas = new Canvas(bigBitmap);
bigCanvas.drawColor(Color.WHITE);
Paint paint = new Paint();
int iHeight = 0;
holder.itemView.setDrawingCacheEnabled(true);
holder.itemView.buildDrawingCache();
bigCanvas.drawBitmap(holder.itemView.getDrawingCache(), 0f, iHeight, paint);
holder.itemView.setDrawingCacheEnabled(false);
holder.itemView.destroyDrawingCache();
iHeight += holder.itemView.getMeasuredHeight();
try {
for (int i = 1; i < size; i++) {
view.getAdapter().onBindViewHolder(holder, i);
holder.itemView.setDrawingCacheEnabled(true);
holder.itemView.buildDrawingCache();
bigCanvas.drawBitmap(holder.itemView.getDrawingCache(), 0f, iHeight, paint);
iHeight += holder.itemView.getMeasuredHeight();
holder.itemView.setDrawingCacheEnabled(false);
holder.itemView.destroyDrawingCache();
}
} catch (Exception e) {
}
return bigBitmap;
}
現在我想包括LinearLayout也在它剛好在RecyclerView之上。由於我無法理解代碼,我無法修改它以包含LinearLayout。我無法理解的是與像素相關的術語,如Canvas,DrawingCache。所以,如果任何人都可以提供一些基本信息,那就太好了。還幫助我在處理的位圖中包含linearlayout。
https://stackoverflow.com/questions/30085063/take- a-screenshot-of-recyclerview-in-full-length –
https://stackoverflow.com/questions/30085063/take-a-screenshot-of-recyclerview-in-full-length –