截图工具类
TrueloveSomeGIRl opened this issue · 2 comments
TrueloveSomeGIRl commented
afkT commented
看描述猜测,应该是存在动画且没绘制导致,你可以这样尝试下解决
CapturePictureUtils#snapshotByRecyclerView_LinearLayoutManager
新建一个类,复制该方法代码,并且进行修改 竖屏
的代码
// ===========
// = 竖向滑动 =
// ===========
for (int i = 0; i < itemCount; i++) {
RecyclerView.ViewHolder holder = adapter.createViewHolder(recyclerView, adapter.getItemViewType(i));
adapter.onBindViewHolder(holder, i);
View childView = holder.itemView;
WidgetUtils.measureView(childView, recyclerView.getWidth());
bitmaps[i] = canvasBitmap(childView, config);
height += childView.getMeasuredHeight();
}
修改为自己的 Adapter 并且新增自定义方法,自定义方法主要的作用是对 holder.itemView 里面的动画 View 进行直接赋值并且不做动画效果,且调用 postInvalidate。
这样就能够实现,截图走无动画且进行绘制,非截图则有动画,你看下这样的思路能否正常截出来
afkT commented
看描述猜测,应该是存在动画且没绘制导致,你可以这样尝试下解决
CapturePictureUtils#snapshotByRecyclerView_LinearLayoutManager
新建一个类,复制该方法代码,并且进行修改
竖屏
的代码// =========== // = 竖向滑动 = // =========== for (int i = 0; i < itemCount; i++) { RecyclerView.ViewHolder holder = adapter.createViewHolder(recyclerView, adapter.getItemViewType(i)); adapter.onBindViewHolder(holder, i); View childView = holder.itemView; WidgetUtils.measureView(childView, recyclerView.getWidth()); bitmaps[i] = canvasBitmap(childView, config); height += childView.getMeasuredHeight(); }修改为自己的 Adapter 并且新增自定义方法,自定义方法主要的作用是对 holder.itemView 里面的动画 View 进行直接赋值并且不做动画效果,且调用 postInvalidate。
这样就能够实现,截图走无动画且进行绘制,非截图则有动画,你看下这样的思路能否正常截出来
例:adapter.xxxMethod(childView, adapter.getItemViewType(i)) 这样就能够知道属于什么 viewType