程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了拍摄完整长度的RecyclerView屏幕截图大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决拍摄完整长度的RecyclerView屏幕截图?

开发过程中遇到拍摄完整长度的RecyclerView屏幕截图的问题如何解决?下面主要结合日常开发的经验,给出你关于拍摄完整长度的RecyclerView屏幕截图的解决方法建议,希望对你解决拍摄完整长度的RecyclerView屏幕截图有所启发或帮助;

这是我的解决方案,linearlayoutmanager当 并且 。此解决方案基于此答案。

:这可能会导致内存不足错误。

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();
        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();
        }
        return bigBitmap;
    }

它最初是用Kotlin编写的。这是我使用的原始代码。

解决方法

我想获得活动的“全页”屏幕截图。该视图包含一个RecyclerView,其中包含许多项。

我可以使用此功能拍摄当前视图的屏幕截图:

public Bitmap getScreenBitmap() {
    View v= findViewById(R.id.container).getRootView();
    v.setDrawingCacheEnabled(true);
    v.buildDrawingCache(true);
    Bitmap b = Bitmap.createBitmap(v.getDrawingCache());
    v.setDrawingCacheEnabled(false); // clear drawing cache
    return b;
}

但是它仅包含我可以正常查看的项目(符合预期)。

截屏时,有什么方法可以使RecyclerView神奇地完整显示(一次显示所有项目)?

如果没有,我应该如何解决这个问题?

大佬总结

以上是大佬教程为你收集整理的拍摄完整长度的RecyclerView屏幕截图全部内容,希望文章能够帮你解决拍摄完整长度的RecyclerView屏幕截图所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: