如何在android中使用webview明智地显示Html内容页面?

时间:2012-08-18 10:57:12

标签: javascript android webview

您创建简单的应用程序以在webview中显示html页面我使用webview并显示这样的页面加载时间。

Display first time load the data

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

首先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按钮旁边和上一页显示下一页和上一页。所以使用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方法显示但我不能这样做。在最后一页的其余部分包含无法显示。

请以任何方式见到我。

提前感谢..

3 个答案:

答案 0 :(得分:1)

嗨朋友最后我得到了我的问题answer.i使用ScrollTo方法滚动包含和显示下一个包含当前页面。但是问题是webView显示都包含相应的设备。所有时间包含显示高于此当前value.so我使用Webview.getScale();方法来显示webview使用多少比例尺。据此我使用此方法获取当前包含的webview并使用Display page wise.it s finally it s work for我..

Name For Calender Outhentication De

答案 1 :(得分:0)

您好,您必须将您的HTML放入res中,然后您必须将其保留为raw,之后您可以像这样访问它...

webviewTips.loadUrl( “文件:///android_res/raw/tips.html”);

答案 2 :(得分:0)

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

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

编辑您的HTML文件并将Anchor Tags放入其中......使用该文件,用户可以轻松浏览网页。 (Example for that