6

嗨,我创建了简单的应用程序来在 webview 中显示 html 页面我使用 webview 并像这样显示页面加载时间。

显示首次加载数据

在此之后禁用滚动并使用下一个和上一个按钮来后退和前进包含。所以我的代码如下。

首先onCreate显示添加webview并加载html文件。

        mainWebView = (WebView) findViewById(R.id.mainWebView);
    mainWebView.setVerticalScrollBarEnabled(false);
    mainWebView.setHorizontalScrollBarEnabled(false);
    mainWebView.getSettings().setJavaScriptEnabled(true);
    mainWebView.setWebViewClient(new MyWebClient());
    mainWebView.setPictureListener(new MyPictureClass());

    mainWebView.loadUrl("file:///android_asset/chapter-001.html");

在使用 MyWebclient 类获取 mainwebview 的高度和宽度之后。

class MyWebClient extends WebViewClient 
    {
        @Override
        public void onPageFinished(WebView view, String url) 
        {
            System.err.println("Page Finish Call");
            lanscapHeight = protraitHeight = findHeight = mainWebView.getHeight();
            System.err.println("Find     Height->"+findHeight);
            System.err.println("Portait  Height->"+protraitHeight);
            System.err.println("Landscap Height->"+lanscapHeight);


        }
    }

在此之后使用 myPictureClass 获取 webView 包含长度。

class MyPictureClass implements PictureListener
    {
        @Override
        public void onNewPicture(WebView view, Picture picture) 
        {   

                proTraitContain = mainWebView.getContentHeight();

                System.err.println("picture Class Call-->"+proTraitContain);
        }
    }

在 this.create button next and previous 之后显示下一页和上一页。所以使用 SimpleOnGestureListener 来检测触摸事件。

 btnNext = (Button) findViewById(R.id.btnNext);
        btnNext.setOnTouchListener(this);
        btnPrev = (Button) findViewById(R.id.btnPrev);
        btnPrev.setOnTouchListener(this);

覆盖触摸方法。

 @Override
        public boolean onTouch(View view, MotionEvent event) 
        {
            if (view == btnNext)
            {
                btnClickFlage = true;
                gestureDetector.onTouchEvent(event);
            } else 
            {
                btnClickFlage = false;
                gestureDetector.onTouchEvent(event);
            }
            return false;
        }

implement the SimpleGestureListener class as Below.

class MyGesture extends SimpleOnGestureListener 
    {
        @Override
        public boolean onSingleTapUp(MotionEvent e)
        {

            super.onSingleTapUp(e);

                    System.err.println("Display Total Contain For Protrait -->"+proTraitContain);
                    System.err.println("Before Height-->" + findHeight);

                    if (btnClickFlage) 
                    {



                        if (findHeight > (proTraitContain+protraitHeight)) 
                        {
                            if(restProtraitFlag)
                            {
                                System.err.println("If part In side Flag-->"+findHeight);
                                findHeight=findHeight+protraitHeight;
                                restProtraitFlag=false;
                                //findHeight=findHeight+protraitHeight;
                                mainWebView.scrollTo(0, findHeight);
                                System.err.println("If part In side Flag-->"+findHeight);
                            }else
                            {
                                mainWebView.loadUrl("file:///android_asset/chapter-002.html");
                                restProtraitFlag=true;
                            }
                        } 
                        else
                        {
                            if(protraitFlag)
                            {
                                if(findHeight==protraitHeight)
                                {
                                    findHeight = protraitHeight;
                                }else
                                {
                                    findHeight = findHeight + protraitHeight;   
                                }
                                protraitFlag=false;
                            }else
                            {
                                findHeight = findHeight + protraitHeight;
                            }
                            mainWebView.scrollTo(0, findHeight);
                        }
                    }
                    else
                    {
                        restProtraitFlag=true;
                        if (findHeight<=0)
                        {
                            mainWebView.loadUrl("file:///android_asset/chapter-001.html");
                            System.err.println("Load Previous page");

                        } 
                        else 
                        {
                            findHeight = findHeight - protraitHeight;
                            mainWebView.scrollTo(0, findHeight);
                        }
                    }
                    System.err.println("After Height-->" + findHeight);
                }
            return true;
        }
    }

但我无法显示当前 html 页面路径的最后一页。现在该怎么办。请给出任何解决方案。很紧急。我正确地获得了内容宽度并使用 scrollTo 方法来显示,但我做不到。在最后一页之后,某些包含的其余部分无法显示。

请以任何方式看到我。

预先感谢..

4

3 回答 3

1

嗨朋友最后我得到了我的问题答案。我使用 ScrollTo 方法滚动当前页面的包含和显示下一个包含。但问题是 webView 显示全部包含根据设备。所以所有时间包含显示都高于当前值。所以我使用该Webview.getScale();方法显示 webview 使用了多少比例。据此,我使用此方法并获取 webview 的当前包含并使用明智的显示页面。它对s finally it我有用..

日历认证名称

于 2012-08-21T08:08:00.340 回答
0

你好你必须把你的HTML放在res中,然后你必须把它保持在原始状态,然后你才能像这样访问它......

webviewTips.loadUrl("file:///android_res/raw/tips.html");

于 2012-08-20T09:26:30.490 回答
0

您正在显示存储在资产文件夹或 sd 卡中的网页。

所以,我的建议是离开这种方法,并以这种方式向用户显示网页..

并编辑您的 HTML 文件并将其放入Anchor Tags……使用该文件,用户可以轻松地遍历网页。(示例

于 2012-08-20T10:44:24.040 回答