Ho un testo lungo e una dimensione di testo fissa. Come può mostrare il testo pagina per pagina? Gli utenti interagiranno con il programma in questo modo: Si sposta verso sinistra o destra per passare alla pagina successiva o precedente.Come pagina un lungo testo?
Attualmente, creo un PageManager per eseguire questo lavoro. Ma è molto limitato. Il codice di base per elaborare il testo è:
while (true) {
newLineIndex = TextUtils.indexOf(content, '\n', processIndex);
if (newLineIndex == -1) {// till the end of content
charCount = paint.breakText(content, processIndex, content.length(), false, leftLines * lineWidth, width);
} else {
charCount = paint.breakText(content, processIndex, ++newLineIndex, false, leftLines * lineWidth, width);
}
leftLines = (int) ((leftLines * lineWidth - width[0])/lineWidth);
processIndex += charCount;
if (leftLines < 1 || processIndex >= content.length()) {
page = new Page();
page.endIndex = processIndex;
page.startIndex = pageBaseLine;
page.content = content.subSequence(page.startIndex, page.endIndex);
result.add(page);
pageBaseLine = processIndex;
leftLines = lineNumber;
}
if (processIndex >= content.length()) {
break;
}
}
La limitazione è la pagina può troncare il testo come
|A lon|
|g wor|
|d man|
// una parola lunga uomo
o incorrec linee a causa di word wrapping :
// Pagina manager calcola questo (2 linee):
|a sentence with loooooooo|
|ooong word abcdefghijklmn|
// Ma in realtà in modalità testo (3 linee):
|a sentence with |
|looooooooooong word |
|abcdefghijklmn |
Così il numero di riga finale è più di calcolo. Quindi il mio gestore di pagine è stupido. Qualcuno mi aiuterebbe? Grazie!
Poiché si tratta di un algoritmo domanda correlata, forse dovresti prendere in considerazione la possibilità di postarla in http://programmers.stackexchange.com/ –
Vedere la mia risposta qui http://stackoverflow.com/questions/20204348/how-to-break-styled-text-into-pages -in-android – mixel