我正在使用barteksc-AndroidPdfViewer。我正在使用此代码
package com.epubtest.hxfy.epubtest;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnDrawListener;
import com.github.barteksc.pdfviewer.listener.OnErrorListener;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.listener.OnPageScrollListener;
public class PDFReaderActivity2 extends AppCompatActivity implements OnPageChangeListener, OnLoadCompleteListener, OnDrawListener, OnErrorListener, OnPageScrollListener {
private PDFView pdfview;
private SharedPreferences pdfReader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pdfreader2);
pdfReader = this.getSharedPreferences("PDFReader", Context.MODE_PRIVATE);
pdfview = (PDFView) findViewById(R.id.pdfView);
pdfview.fromAsset("test4.pdf")
.defaultPage(pdfReader.getInt("pages",0))
.onPageChange(this)
.swipeHorizontal(false)
.enableAnnotationRendering(true)
.scrollHandle(null)
.onLoad(this)
.onDraw(this)
.enableSwipe(true)
.onError(this)
.enableDoubletap(true)
.onPageScroll(this)
.load();
}
@Override
public void onPageChanged(int page, int pageCount) {
SharedPreferences.Editor edit = pdfReader.edit();
edit.putInt("pages",page);
edit.commit();
}
@Override
public void loadComplete(int nbPages) {
}
@Override
public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
}
@Override
public void onError(Throwable t) {
}
@Override
public void onPageScrolled(int page, float positionOffset) {
}
}
更改页面的方向。但是,当我们开始观景时,如果我必须假设肖像模式和第15页页面方向改变页面方向。
SharedPreferences
无效。它不能记录我们所在的最后一页。请帮助我这方面,请帮帮我。
答案 0 :(得分:0)
不要使用SharePreferences。当您更改屏幕方向时,系统会再次调用onCreate()
方法并重新绘制视图。要解决此问题,您有两种方法。第一个是强制在清单文件中保存状态。
<activity name= ".YourActivity" android:configChanges="orientation|screenSize"/>
如果编写此参数无需在Activity中处理,框架将处理其余的事情。如果方向改变,它将保持屏幕或布局的状态。
谷歌开发者推荐另一种方式,这是处理方向更改中的这个问题的更好方法。您可以在此link中获取更多信息。阅读此article也会更好。它是关于活动的生命周期。
如果您想要源代码示例,我可以与您分享我的来源。 Enjoy!
要处理方向更改,请在源中添加以下几行。
Configurator.onRender(new OnRenderListener() {
@Override
public void onInitiallyRendered(int pages, float pageWidth, float pageHeight) {
pdfView.fitToWidth(); // optionally pass page number
}
});