0

我正在尝试使用底部导航菜单在我的 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();
   }
 }
4

0 回答 0