Android監聽WebView滑動到底部

jopen 11年前發布 | 105K 次閱讀 Android Android開發 移動開發

MainActivity如下:

package cn.testwebview;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import cn.testwebview.TestWebView.ScrollInterface;
/**
 * Demo描述:
 * 監聽WebView滑動到底部
 * 
 * 參考資料:
 * 1 http://blog.csdn.net/conant1989/article/details/8124582
 *   Thank you very much
 */
public class MainActivity extends Activity {
    private TestWebView mTestWebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initWebView();
    }



    //設置WebView
    private void initWebView() {
        mTestWebView = (TestWebView) findViewById(R.id.webView);
        mTestWebView.setVerticalScrollBarEnabled(true);
        mTestWebView.setHorizontalScrollBarEnabled(false);
        mTestWebView.getSettings().setSupportZoom(true);
        mTestWebView.getSettings().setBuiltInZoomControls(true);
        mTestWebView.getSettings().setJavaScriptEnabled(true);

        mTestWebView.getSettings().setDomStorageEnabled(true);
        mTestWebView.getSettings().setPluginsEnabled(true);
        mTestWebView.requestFocus();

        mTestWebView.getSettings().setUseWideViewPort(true);
        mTestWebView.getSettings().setLoadWithOverviewMode(true);
        mTestWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

        mTestWebView.loadUrl("http://www.ifeng.com");
        mTestWebView.setWebViewClient(new TestWebViewClient());
        webViewScroolChangeListener();

    }

    //核心代碼
    private void webViewScroolChangeListener() {
        mTestWebView.setOnCustomScroolChangeListener(new ScrollInterface() {
            @Override
            public void onSChanged(int l, int t, int oldl, int oldt) {
                //WebView的總高度
                float webViewContentHeight=mTestWebView.getContentHeight() * mTestWebView.getScale();
                //WebView的現高度
                float webViewCurrentHeight=(mTestWebView.getHeight() + mTestWebView.getScrollY());
                System.out.println("webViewContentHeight="+webViewContentHeight);
                System.out.println("webViewCurrentHeight="+webViewCurrentHeight);
                if ((webViewContentHeight-webViewCurrentHeight) == 0) {
                    System.out.println("WebView滑動到了底端");
                }
            }
        });
    }


    private class TestWebViewClient extends WebViewClient{
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

        }
        @Override
        public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) {
            super.onReceivedError(view, errorCode, description, failingUrl);
        }
    }

}


TestWebView如下:

package cn.testwebview;

import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;

public class TestWebView extends WebView {
    public ScrollInterface mScrollInterface;

    public TestWebView(Context context) {
        super(context);
    }

    public TestWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public TestWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {

        super.onScrollChanged(l, t, oldl, oldt);

        mScrollInterface.onSChanged(l, t, oldl, oldt);

    }

    public void setOnCustomScroolChangeListener(ScrollInterface scrollInterface) {

        this.mScrollInterface = scrollInterface;

    }

    public interface ScrollInterface {

        public void onSChanged(int l, int t, int oldl, int oldt);

    }

}


 

main.xml如下:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
  >

    <cn.testwebview.TestWebView
        android:id="@+id/webView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="@string/hello_world"
        android:layout_centerInParent="true"
    />

</RelativeLayout>


 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!