Android监听WebView滑动到底部
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滑动到底部的更多相关文章
- Android监听ScrollView滑动到顶端和底部
Android监听ScrollView滑动到顶端和底部 package cn.testscrollview; import android.os.Bundle; import android. ...
- Android 监听 ScrollView 滑动到最底部。
做产品时,有一个需求,需要监听ScrollView滑动到最底部.在网上找了些方法,都有这样或那样的问题,要不就是监听不精确, 要不就是重复监听,那些代码没有产品化,很不可靠. 经过自己试验,终于找到了 ...
- Android中监听ListView滑动到底部
Android中的应用就是ListView中向下滑动加载更多的功能,不要再onScroll方法中进行判断,那样当滑动到底部的时候,触摸屏幕就会又去加载更多,效果很差,可以自行测试一下: listvie ...
- Android中监听ScrollView滑动停止和滑动到底部
1.监听ScrollView滑动停止: /********************监听ScrollView滑动停止*****************************/ scrollView.s ...
- Android 监听ListView、GridView滑动到底部
// 监听listview滚到最底部 mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onS ...
- 监听RecyclerView滑动到末端
监听RecyclerView滑动到末端 效果图 实现 1. 添加滑动到末端的接口 package com.kongqw.recyclerviewdemo; /** * Created by kongq ...
- Android监听系统短信数据库变化-提取短信内容
由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路. Android监听系统短信数据库内容变化使用场景: 1.监听短信数据库的 ...
- Android监听返回键、Home键+再按一次返回键退出应用
Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME @Override public boolean onKeyDown( ...
- Android监听来电和去电
要监听android打电话和接电话,只需下面2步骤1.第一步,写一个Receiver继承自BroadcastReceiver import android.app.Service; import an ...
随机推荐
- Python 图论工具
networkx: 一个用Python语言开发的图论与复杂网络建模工具, 内置了经常使用的图与复杂网络分析算法, 能够方便的进行复杂网络数据分析.仿真建模等工作. 依赖工具: numpy pypar ...
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!) 继上篇:ORACLE P ...
- 记一次内存泄漏DUMP分析
自从进入一家创业公司以后,逐渐忙成狗,却无所收获,感觉自身的技术能力用武之地很少,工作生活都在业务逻辑中颠倒. 前些天线上服务内存吃紧,让运维把DUMP拿下来,分析一下聊以自慰. 先来统计一下大对象信 ...
- 题注Oracle数据库的网络连接原理
版权声明:本文博客原创文章,博客,未经同意,不得转载.
- 使用Visual Source Safe 2005 - 初学者系列 - 学习者系列文章
本文介绍微软的Visual Source Safe 2005工具的使用 1. 打开该软件,选择“新建数据库” 2. 显示欢迎页 3.选择路径.这里是服务器上代码存放的目录. 4.这里选择第一项 5 ...
- SQL 中OPENQUERY的使用
原文:SQL 中OPENQUERY的使用 OpenQuery 是SQL Server用来与其他Server交互的一种技术,通过OpenQuery,SQL Server 可以直接访问其他数据库资源. 而 ...
- Talend open studio数据导入、导出、同步Mysql、oracle、sqlserver简单案例
推荐大家一个BI工具:talend open studio.我也是刚接触,懂得不多,感觉比较神奇就想大家推荐一下... 由于公司项目,接触了一下BI工具talend,感觉功能很强大, 可以同步多种数据 ...
- SufaceView(绘图类)
public class MainActivity extends Activity { GrameView grameView; @Override public void onCreate(Bun ...
- SpringMVC中Controller
详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] 目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodR ...
- java编程思想笔记(第一章)
Alan Kay 第一个定义了面向对象的语言 1.万物皆对象 2.程序是对象的集合,他们彼此通过发送消息来调用对方. 3.每个对象都拥有由其他对象所构成的存储 4.每个对象都拥有其类型(TYpe) 5 ...