AndroidPdfViewer плохо отображает при увеличении
Я использую AndroidPdfViewer в своем приложении. Он прекрасно работает с жестами, например, проведением в режиме масштабирования. Однако использование перелистывания не всегда возможно, например, при использовании средства просмотра в устройстве киоска. Итак, я определяю направления клавиатуры DPAD и затем перемещаю страницу, вызывая pdfView.scrollTo(x+xstep,y+ystep)
, Проблема в том, что страница отображается частично в режиме масштабирования, начальная видимая часть в порядке, но при прокрутке вниз все линии размыты. Код следует:
//Load pdf
public void onLoadPdf(File file) {
pdfView.fromFile(file)
.enableSwipe(true)
.enableDoubletap(true)
.defaultPage(0)
.enableAnnotationRendering(false)
.scrollHandle(null)
.enableAntialiasing(true)
.onTap(new OnTapListener() {
@Override
public boolean onTap(MotionEvent e) {
return false;
}
})
.onRender(new OnRenderListener() {
@Override
public void onInitiallyRendered(int nbPages) {
pdfView.enableAntialiasing(true);
}
})
.onLoad(new OnLoadCompleteListener() {
@Override
public void loadComplete(int nbPages) {
pdfView.setMinZoom(0.2f);
pdfView.setMidZoom(0.5f);
pdfView.setMaxZoom(2f);
pdfView.resetZoom();
pdfView.zoomTo(zoom = 0.4f);
}
})
.onPageChange(new OnPageChangeListener() {
@Override
public void onPageChanged(int page, int pageCount) {
}
})
.load();
}
//Handle DPAD key strokes
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KEYCODE_DPAD_DOWN:
mIndex = pdfView.getCurrentPage();
pdfView.scrollTo(x, mY);
mY += 50;
pageNumber();
pdfView.enableAntialiasing(true);
pdfView.loadPages();
if (mY > height) {
if (zoom >= 0.6 && zoom<0.8) {
height = pdfView.getHeight()+300;
mY = 0;
pdfView.jumpTo(mIndex + 1);
pageNumber();
pdfView.scrollTo(x, mY);}
else if (zoom>=0.8){
height = pdfView.getHeight()+600;
mY = 0;
pdfView.jumpTo(mIndex + 1);
pageNumber();
pdfView.scrollTo(x, mY);
}
else if (zoom<0.6){
height = pdfView.getHeight()-150;
mY = 0;
pdfView.jumpTo(mIndex + 1);
pageNumber();
pdfView.scrollTo(x, mY);
}
}
return true;
case KEYCODE_DPAD_UP:
mIndex = pdfView.getCurrentPage();
pdfView.scrollTo(x, mY);
mY -= 50;
pageNumber();
pdfView.enableAntialiasing(true);
pdfView.loadPages();
if (mY <= 0) {
height = pdfView.getHeight();
if (mIndex == 0) {
MyUtil.showToast(mContext, R.string.first_page);
mY = 0;
}
else if (zoom>0.7 ){
mY = height+500;
pageNumber();
pdfView.jumpTo(mIndex - 1);
pdfView.scrollTo(x, mY);
}
else {
mY = height;
pageNumber();
pdfView.jumpTo(mIndex - 1);
pdfView.scrollTo(x, mY);
}
}
return true;
}
return super.onKeyDown(keyCode, event);
}