问题描述
我正在尝试使用底部导航菜单在我的 pdf 阅读器中实现夜间模式和水平滑动模式。我已经实现了这两个功能,但问题是我不知道如何保存这两个功能的状态。让我们说当前我通过单击我的导航菜单启用暗模式,然后当我尝试启用水平模式时,我的应用程序会关闭暗模式,当我从水平模式转到暗模式时也是如此,它会关闭水平滑动功能。我想保持两个功能都启用,除非用户通过重新单击将其关闭。我怎样才能做到这一点?
这是我的 android studio 中的 Viewpdf.java 代码:
public static PDFView pdfView;
boolean ishoriz = true;
int pagenumber;
TextView textView;
BottomNavigationView bottomNavigationView;
SharedPreferences mprefs;
SharedPreferences sharedPreference;
SharedPreferences.Editor editor;
boolean nightmode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pdf);
pdfView = findViewById(R.id.pdfView);
pdfView.setVisibility(View.VISIBLE);
loadData();
textView = (TextView) findViewById(R.id.pagenumber);
mprefs = getSharedPreferences("Theme",0);
nightmode = mprefs.getBoolean("Night",true);
if (nightmode) {
pdfView.fromFile(DocumentsFragment.pdf.get(getIntent().getIntExtra("Position",-1)))
.enableAnnotationRendering(true)
.defaultPage(pagenumber)
.nightMode(false)
.fitEachPage(true)
.onPageChange(new OnPagechangelistener() {
@Override
public void onPageChanged(int page,int pageCount) {
pagenumber = page;
}
})
.pageSnap(true) // snap pages to screen boundaries
.pageFling(true)
.autoSpacing(false)
.spacing(12)
.enableAntialiasing(true)
.pageFitPolicy(FitPolicy.BOTH)
.load();
} else {
pdfView.fromFile(DocumentsFragment.pdf.get(getIntent().getIntExtra("Position",-1)))
.enableAnnotationRendering(true)
.defaultPage(pagenumber)
.nightMode(true)
.fitEachPage(true)
.onPageChange(new OnPagechangelistener() {
@Override
public void onPageChanged(int page,int pageCount) {
pagenumber = page;
}
})
.pageSnap(true) // snap pages to screen boundaries
.pageFling(true)
.autoSpacing(false)
.spacing(12)
.enableAntialiasing(true)
.pageFitPolicy(FitPolicy.BOTH)
.load();
}
loadData();
bottomNavigationView = findViewById(R.id.bottom_nav);
}
@Override
protected void onResume() {
super.onResume();
bottomNavigationView.setonNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.horizontal:
if (ishoriz) {
saveData();
if (nightmode) {
pdfView.fromFile(DocumentsFragment.pdf.get(getIntent().getIntExtra("Position",-1)))
.defaultPage(pagenumber)
.swipeHorizontal(true)
.enableAnnotationRendering(true)
.onPageChange(new OnPagechangelistener() {
@Override
public void onPageChanged(int page,int pageCount) {
pagenumber = page;
}
})
.fitEachPage(true)
.pageSnap(true) // snap pages to screen boundaries
.pageFling(true)
.autoSpacing(false)
.spacing(12)
.nightMode(false)
.enableAntialiasing(true)
.pageFitPolicy(FitPolicy.BOTH)
.load();
ishoriz = false;
setMode();
nightmode = false;
} else {
pdfView.fromFile(DocumentsFragment.pdf.get(getIntent().getIntExtra("Position",-1)))
.defaultPage(pagenumber)
.swipeHorizontal(true)
.enableAnnotationRendering(true)
//.scrollHandle(new DefaultScrollHandle(ViewPdf.this))
.onPageChange(new OnPagechangelistener() {
@Override
public void onPageChanged(int page,int pageCount) {
pagenumber = page;
}
})
.fitEachPage(true)
.pageSnap(true) // snap pages to screen boundaries
.pageFling(true)
.autoSpacing(false)
.spacing(12)
.nightMode(true)
.enableAntialiasing(true)
.pageFitPolicy(FitPolicy.BOTH)
.load();
nightmode = true;
}
} else {
saveData();
if (nightmode) {
pdfView.fromFile(DocumentsFragment.pdf.get(getIntent().getIntExtra("Position",-1)))
.defaultPage(pagenumber)
.swipeHorizontal(false)
.enableAnnotationRendering(true)
//.scrollHandle(new DefaultScrollHandle(ViewPdf.this))
.nightMode(false)
.fitEachPage(true)
.onPageChange(new OnPagechangelistener() {
@Override
public void onPageChanged(int page,int pageCount) {
pagenumber = page;
}
})
.pageSnap(true) // snap pages to screen boundaries
.pageFling(true)
.autoSpacing(false)
.spacing(12)
.enableAntialiasing(true)
.pageFitPolicy(FitPolicy.BOTH)
.load();
ishoriz = true;
setMode();
nightmode = false;
} else {
pdfView.fromFile(DocumentsFragment.pdf.get(getIntent().getIntExtra("Position",-1)))
.defaultPage(pagenumber)
.swipeHorizontal(false)
.enableAnnotationRendering(true)
//.scrollHandle(new DefaultScrollHandle(ViewPdf.this))
.nightMode(true)
.fitEachPage(true)
.onPageChange(new OnPagechangelistener() {
@Override
public void onPageChanged(int page,int pageCount) {
pagenumber = page;
}
})
.pageSnap(true) // snap pages to screen boundaries
.pageFling(true)
.autoSpacing(false)
.spacing(12)
.enableAntialiasing(true)
.pageFitPolicy(FitPolicy.BOTH)
.load();
ishoriz = true;
setMode();
nightmode = true;
}
}
break;
case R.id.dark:
if (nightmode) {
pdfView.fromFile(DocumentsFragment.pdf.get(getIntent().getIntExtra("Position",-1)))
.defaultPage(pagenumber)
.swipeHorizontal(false)
.nightMode(true)
.enableAnnotationRendering(true)
// .scrollHandle(new DefaultScrollHandle(ViewPdf.this))
.fitEachPage(true)
.onPageChange(new OnPagechangelistener() {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onPageChanged(int page,int pageCount) {
pagenumber = page;
}
})
.pageSnap(true) // snap pages to screen boundaries
.pageFling(true)
.autoSpacing(false)
.spacing(12)
.enableAntialiasing(true)
.pageFitPolicy(FitPolicy.BOTH)
.load();
nightmode = false;
setMode();
} else {
pdfView.fromFile(DocumentsFragment.pdf.get(getIntent().getIntExtra("Position",-1)))
.defaultPage(pagenumber)
.swipeHorizontal(false)
.nightMode(false)
.enableAnnotationRendering(true)
// .scrollHandle(new DefaultScrollHandle(ViewPdf.this))
.fitEachPage(true)
.onPageChange(new OnPagechangelistener() {
@Override
public void onPageChanged(int page,int pageCount) {
pagenumber = page;
}
})
.pageSnap(true) // snap pages to screen boundaries
.pageFling(true)
.autoSpacing(false)
.spacing(12)
.enableAntialiasing(true)
.pageFitPolicy(FitPolicy.BOTH)
.load();
nightmode = true;
setMode();
}
break;
public void setMode() {
SharedPreferences mPrefs = getSharedPreferences("Theme",0);
SharedPreferences.Editor mEditor = mPrefs.edit();
mEditor.putBoolean("Night",nightmode).commit();
}
public void saveData() {
pagenumber = pdfView.getCurrentPage();
sharedPreference = getPreferences(MODE_PRIVATE);
editor = sharedPreference.edit();
editor.putInt("page",pagenumber);
editor.apply();
}
public void loadData() {
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
pagenumber = sharedPreferences.getInt("page",MODE_PRIVATE);
}
@Override
protected void onPause() {
super.onPause();
saveData();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)