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>

Android监听WebView滑动到底部的更多相关文章

  1. Android监听ScrollView滑动到顶端和底部

    Android监听ScrollView滑动到顶端和底部     package cn.testscrollview; import android.os.Bundle; import android. ...

  2. Android 监听 ScrollView 滑动到最底部。

    做产品时,有一个需求,需要监听ScrollView滑动到最底部.在网上找了些方法,都有这样或那样的问题,要不就是监听不精确, 要不就是重复监听,那些代码没有产品化,很不可靠. 经过自己试验,终于找到了 ...

  3. Android中监听ListView滑动到底部

    Android中的应用就是ListView中向下滑动加载更多的功能,不要再onScroll方法中进行判断,那样当滑动到底部的时候,触摸屏幕就会又去加载更多,效果很差,可以自行测试一下: listvie ...

  4. Android中监听ScrollView滑动停止和滑动到底部

    1.监听ScrollView滑动停止: /********************监听ScrollView滑动停止*****************************/ scrollView.s ...

  5. Android 监听ListView、GridView滑动到底部

    // 监听listview滚到最底部 mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onS ...

  6. 监听RecyclerView滑动到末端

    监听RecyclerView滑动到末端 效果图 实现 1. 添加滑动到末端的接口 package com.kongqw.recyclerviewdemo; /** * Created by kongq ...

  7. Android监听系统短信数据库变化-提取短信内容

    由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路. Android监听系统短信数据库内容变化使用场景: 1.监听短信数据库的 ...

  8. Android监听返回键、Home键+再按一次返回键退出应用

    Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME @Override public boolean onKeyDown( ...

  9. Android监听来电和去电

    要监听android打电话和接电话,只需下面2步骤1.第一步,写一个Receiver继承自BroadcastReceiver import android.app.Service; import an ...

随机推荐

  1. 如何设置Installshield中 feature的选中状态

    原文:如何设置Installshield中 feature的选中状态 上一篇: 使用strtuts2的iterator标签循环输出二维数组之前一直有筒子问如何设置Installshield中 feat ...

  2. QT界面应用程序的语言国际化

    对字符串使用tr包含起来,因为tr是QObject的一个静态函数,所以它可以直接调用. 在生成language.ts文件之前应该编辑.pro文件,如下: QT += core gui greaterT ...

  3. Ubuntu中改变文件的默认打开方式

    其实最简单的方法是右键,在属性中修改,不过这样做没啥意义. ubuntu中与文件的打开方式相关的配置文件有四个: /etc/gnome/defaults.list 这是全局配置文件 /usr/shar ...

  4. SVN服务器搭建(3)

    转自:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2408089.html vs 2013 svn插件:http://www.visua ...

  5. waitFor和waitForAny的实现

    waitFor和waitForAny的实现 在实现waitFor方法之前,我们先要搞明白下面这些问题: 1. waitFor方法的形参有限制吗? 没有!如果形参是Task类型,不应该启动Task,如果 ...

  6. .NET MVC4 实训记录之六(利用ModelMetadata实现资源的自主访问)

    上一篇我们已经实现自定义资源文件的访问,该篇我们使用它配合ModelMetadata实现资源文件的自主访问.这样做是为了我们能更简单的用MVC原生的方式使用资源文件.由于我的文章旨在记录MVC项目的实 ...

  7. DropDownListFor的用法

    Asp.Net MVC中DropDownListFor的用法   在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值.用法不复杂,这里简单做一个记录. ...

  8. XHTML

    XHTML 是 HTML 与 XML(扩展标记语言)的结合物. XHTML 包含了所有与 XML 语法结合的 HTML 4.01 元素. 最主要的不同: XHTML 元素必须被正确地嵌套. XHTML ...

  9. Python语言在企业级应用上的十大谬误

    英文原文:https://www.paypal-engineering.com/2014/12/10/10-myths-of-enterprise-python/ 翻译原文:http://www.os ...

  10. Scala中的语言特性是如何实现的(3) -- Trait

    我的新博客地址:http://cuipengfei.me/blog/2013/10/13/scala-trait/ 我在Coursera上跟了一门叫做Functional Programming Pr ...