RecyclerView滚动滚动

时间:2018-10-05 08:32:03

标签: android android-recyclerview

与此相关的是,它遍历了许多博客和链接,了解了这种混乱滚动背后的一些深刻见解,特别是昂贵的 onBindViewHolder(),在我的情况下,它必须像波纹管一样沉重,

@Override
public void onBindViewHolder(@NonNull final PDFPageAdapter.MyViewHolder myViewHolder, int position) {
   PdfRenderer.Page currentPage = pdfRenderer.openPage(position);
    //W=564, H=771
    if (pageWidth==0) {
        pageWidth = currentPage.getWidth()*3;
        pageHeight = currentPage.getHeight()*3;

    }

    //BMP is around 15 MB(15*1000*1000 bytes)
    createdBMP = Bitmap.createBitmap(pageWidth, pageHeight, Bitmap.Config.ARGB_8888);
    currentPage.render(createdBMP, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    currentPage.close();

    //Glide.with(mContext).load(createdBMP).into(myViewHolder.ivForPDF);

    myViewHolder.ivForPDF.setImageBitmap(createdBMP);
    //GC free up bitmap memory
    createdBMP=null;
}

由于它位于Custom PDF Renderer应用程序中,因此使用PdfRenderer本机api来显示页面, 但是获取的页面质量很差,无法在ImageView上显示(宽度和高度match_parent),因此我必须将其尺寸乘以3并创建相同的位图,质量不错,但非常很重的位图,导致动态滚动。 我也尝试过追踪。

  • 使用位图在构造函数中创建列表,但会给出非常流行的位图错误 outOfMemoryError
  • 还使用了 Glide ,但没有运气。
  • 缩小位图表示,
  • 也抛弃了Google关于有效加载位图的建议,但这里我需要的位图要比实际的大。

任何帮助深表感谢,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试如下将位图设置为带有滑动的imageview

ByteArrayOutputStream stream = new ByteArrayOutputStream();
yourBitmapObject.compress(Bitmap.CompressFormat.PNG, 100, stream);
Glide.with(this)
     .load(stream.toByteArray())
     .asBitmap()
     .error(R.drawable.ic_err_drawable)
     .into(your_imageview);