与此相关的是,它遍历了许多博客和链接,了解了这种混乱滚动背后的一些深刻见解,特别是昂贵的 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并创建相同的位图,质量不错,但非常很重的位图,导致动态滚动。 我也尝试过追踪。
任何帮助深表感谢,谢谢。
答案 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);