मैं epub पाठक में जाने के लिए पृष्ठ सुविधा को लागू करने के लिए है में पृष्ठ पर जाएं। मैं Page-Turner के स्रोत कोड में इस सुविधा को लागू करने की कोशिश की है, लेकिन इसके सफलतापूर्वक .epub फ़ाइल में अनेक एक्सएचटीएमएल की वजह से काम नहीं कर रहा, जैसा कि हम जानते हैं कि प्रत्येक अध्याय एक एक्सएचटीएमएल फ़ाइल और इस ऐप्लिकेशन में स्क्रीन आकार के अनुसार अपनी विभाजन की है। इसलिए जब भी स्क्रीन का आकार बड़ा होता है तो स्क्रीन की कुल संख्या कम होती है और स्क्रीन छोटी होने पर पृष्ठों की संख्या कम होती है, इसलिए कोई फिक्स पेज नंबर नहीं है जहां कूदना है। मैंने संपादित किया है और नीचे देने वाले की तरह लागू करने की कोशिश की है।epub रीडर (PageTurner)
ReadingFragment.java
public void performSearch(String query) {
int index = Integer.parseInt(query);
if (index > bookView.getTotalNumberOfPages()) {
Toast.makeText(context, "Please enter number between 0 to " + bookView.getTotalNumberOfPages(), Toast.LENGTH_SHORT).show();
} else {
bookView.gotoPageNumber(index);
}
}
BookView.java
public void gotoPageNumber(int pageNum) {
strategy.gotoPage(pageNum);
progressUpdate();
}
PageChangeStrategy.java
public void gotoPage(int pageNumber);
FixedPagesStrategy.java
@Override
public void gotoPage(int pageNumber) {
PageTurnerSpine spinePos = bookView.getSpine();
this.storedPosition = -1;
int currentPage = getCurrentPage() + spinePos.getUptoPage(spinePos.getPosition());
Log.e(TAG, "Adding >> Upto Page : " + spinePos.getUptoPage(spinePos.getPosition())
+ ", currentPage : " + getCurrentPage());
Log.e(TAG, "pagenum : " + pageNum);
if (pageNumber > currentPage) { //pageNumber is greater then current page
int jumpSpine = spinePos.getIndexFromPage(pageNumber);
int currentSpine = spinePos.getPosition();
Log.e(TAG, "jumpSpine : " + jumpSpine + ", currentSpine : " + currentSpine);
if (jumpSpine == currentSpine) {
int diffrence = pageNumber - currentPage;
Log.e(TAG, "diffrence < : " + diffrence);
Log.e(TAG, "Minimum >> PageOffSets - 1 : " + (spinePos.getPageOffSets(currentSpine) - 1)
+ ", pageNum + diffrence : " + (pageNum + diffrence));
this.pageNum = Math.min(pageNum + diffrence, spinePos.getPageOffSets(currentSpine) - 1);
updatePosition();
} else {
PageTurnerSpine spine = bookView.getSpine();
if (spine == null || !spine.navigateFrontSpine(spine.getIndexFromPage(pageNumber))) {
return;
}
this.pageNum = 0;
gotoPage(pageNumber);
}
} else { //pageNumber is less then current page
int jumpSpine = spinePos.getIndexFromPage(pageNumber);
int currentSpine = spinePos.getPosition();
Log.e(TAG, "jumpSpine : " + jumpSpine + ", currentSpine : " + currentSpine);
if (jumpSpine == currentSpine) {
int diffrence = currentPage - pageNumber;
Log.e(TAG, "diffrence > : " + diffrence);
Log.e(TAG, "pagenum - diffrence : " + (pageNum - diffrence));
this.pageNum = Math.max(pageNum - diffrence, 0);
updatePosition();
} else {
PageTurnerSpine spine = bookView.getSpine();
if (spine == null || !spine.navigateBackSpine(spine.getIndexFromPage(pageNumber))) {
return;
}
this.pageNum = 0;
gotoPage(pageNumber);
}
}
Log.e(TAG, "In last pageNum : " + pageNum);
}
PageTurnerSpine.java
public int getIndexFromPage(int pageNumber) {
int total = 0;
int totalIndex = 0;
for (List<Integer> pagesPerSection : pageOffsets) {
total += pagesPerSection.size();
totalIndex = totalIndex + 1;
if (total - 1 >= pageNumber) {
return totalIndex - 1;
}
}
return 0;
}
public int getUptoPage(int position) {
int total = 0, max = 0;
for (List<Integer> pagesPerSection : pageOffsets) {
max = max + 1;
if (position == max - 1) {
return total;
}
total += pagesPerSection.size();
}
return 0;
}
public int getPageOffSets(int position) {
int max = 0;
for (List<Integer> pagesPerSection : pageOffsets) {
max = max + 1;
if (position == max - 1) {
return pagesPerSection.size();
}
}
return 0;
}
public boolean navigateFrontSpine(int indexSpine) {
if (this.position == size() - 1) {
return false;
}
this.position = indexSpine;
return true;
}
public boolean navigateBackSpine(int indexSpine) {
if (this.position == 0) {
return false;
}
this.position = indexSpine;
return true;
}
जब मैं इस कोड को लागू करते हैं और कुछ समय के लिए यह सही ढंग से काम चलाते हैं। लेकिन कुछ समय यह, पर अन्य पृष्ठ क्रमांक कूद की तरह अगर मैं 110 में प्रवेश तो यह 109 पर कूद जाएगा और जब मैं अध्याय प्रारंभिक पृष्ठ पर कूदने के लिए कोशिश कर रहा हूँ तो परिवर्तन नहीं खुराक होते हैं। क्रिप्या मेरि सहायता करे।
https://github.com/NightWhistler/PageTurner इस स्रोत कोड में मैंने ऊपर दी गई कुछ फ़ाइल संपादित की है। वे इस परियोजना में पहले से मौजूद हैं।
ज्यादातर मैं देखता हूँ कि Kindle, FBReader, आदि की तरह epub पाठक के सबसे ... जाओ करने के लिए पृष्ठ सुविधा को लागू नहीं करता है। तो, मैं यह भी जानना चाहता हूं कि क्या यह सुविधा लागू करना संभव है या नहीं?
सहायता के लिए धन्यवाद :)
मैं आप अधिक विशिष्ट कोड है कि समस्या की पहचान करता है पोस्ट सुझाव देते हैं। जैसा कि यह खड़ा है, इस प्रश्न में कोड की मात्रा काफी बड़ी है और इसे चलाने में सक्षम होने के बिना इसे डीबग करना मुश्किल हो जाता है। http://stackoverflow.com/help/mcve – Anthony
https://github.com/NightWhistler/PageTurner इस स्रोत कोड में मैंने ऊपर दी गई कुछ फ़ाइल संपादित की है।वे पहले से ही परियोजना में मौजूद हैं। –