Ответ 1
Я сделал pagination эффект в android, как это..
- > создать пользовательский класс webview.
- > установить ниже клиентов и загрузить URL-адрес, тогда вы получите горизонтальную прокрутку со списком страниц.
- > Заблокировать прокрутку по умолчанию webview.
- > Для гладкого эффекта разбивки на страницы вместо перемещения прокрутки веб-просмотра перемещайте весь веб-просмотр, поэтому для одной страницы будет один веб-просмотр.
- > Используйте свои собственные viewflippers для буферизации предыдущих и следующих страниц.
Я сделал все эти реализации, и я сделал продукт для организации. Просто я делюсь своей идеей, как подойти к лучшему решению. Вместо использования третьих паритетов и застревания в середине из-за ограничения этого sdk, сделайте все, что угодно самостоятельно.
private class MyWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
final MyWebView myWebView = (MyWebView) view;
String varMySheet = "var mySheet = document.styleSheets[0];";
String addCSSRule = "function addCSSRule(selector, newRule) {"
+ "ruleIndex = mySheet.cssRules.length;"
+ "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);"
+ "}";
String insertRule1 = "addCSSRule('html', 'padding: 0px; height: "
+ (myWebView.getMeasuredHeight()/getContext().getResources().getDisplayMetrics().density )
+ "px; -webkit-column-gap: 0px; -webkit-column-width: "
+ myWebView.getMeasuredWidth() + "px;')";
myWebView.loadUrl("javascript:" + varMySheet);
myWebView.loadUrl("javascript:" + addCSSRule);
myWebView.loadUrl("javascript:" + insertRule1);
}
}
private class MyWebChromeClient extends WebChromeClient
{
@Override
public void onProgressChanged(WebView view, int newProgress)
{
super.onProgressChanged(view, newProgress);
if(newProgress == 100)
{
postDelayed(new Runnable()
{
@Override
public void run()
{
calculateNoOfPages();
}
},200);
}
}
}
private void calculateNoOfPages()
{
if(GlobalSettings.EPUB_LAYOUT_TYPE == GlobalConstants.FIXED)
{
}
else
{
if(getMeasuredWidth() != 0)
{
int newPageCount = computeHorizontalScrollRange()/getMeasuredWidth();
getData().getChapterVO().setPageCount(newPageCount);
}
}
}
@Override
public int computeHorizontalScrollRange() {
// TODO Auto-generated method stub
return super.computeHorizontalScrollRange();
}
вы загружаете URL-адрес