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滑动监听的问题,通过创建自定义的WebView子类和接口回调机制来实现滚动监听,以达到在用户滚动时执行特定逻辑的目的。这对于需要对WebView滚动事件做出响应的...
1. **监听滚动事件**:可以使用WebView的`OnScrollChangedCallback`监听用户的滚动行为。 2. **自定义WebViewClient**:重写`shouldInterceptRequest`方法,这个方法会在WebView尝试加载一个资源时被调用。在这里,...
在实际应用中,我们需要监听WebView的滚动事件,例如通过重写`onScrollChanged()`方法。每次滚动后,我们可以调用这些辅助函数来获取当前屏幕的Bitmap,并将其合并到总截图中。由于滚动过程中可能会遇到固定定位...
在Android应用开发中,创建一个类似微信的可滑动底部导航栏是一项常见的需求。这个功能不仅可以提供用户友好的界面,还能有效地组织多个视图或功能模块。本教程将详细介绍如何利用ViewPager和Fragment来实现这一效果...
这可以通过监听WebView的滚动状态,例如通过`WebViewScrollView`的滚动回调来实现。 接下来,我们需要在WebView内部处理滑动事件。WebView内部也有自己的滑动逻辑,因此我们需要找到一种方式,在WebView无法再向上...
2. **监听Webview滚动**:为了获取Webview的滚动位置,我们需要实现`OnScrollChangeListener`接口。在滚动到底部时,触发截屏操作。由于Webview没有直接提供滚动监听接口,我们需要通过JavaScript和Java之间的交互来...
综上所述,这个"Android底部滑动弹出窗口源码"项目涵盖了Android开发中的多个关键点:自定义视图动画、WebView交互、底部导航菜单和顶部滑动菜单的实现。通过研究这个项目,开发者不仅可以学习到如何实现底部滑出...
综上所述,实现"webview加载到底自动弹出gallery"的关键在于监听WebView的滚动事件,判断何时触发画廊的弹出,并正确处理用户从画廊返回的结果。通过这些步骤,我们可以创建一个更加互动和便捷的用户界面,提升应用...
想知道用户是否已经滚动到页面底部,可以通过比较当前滚动位置和页面总高度来判断: ```java int currentScrollY = webView.getScrollY(); int contentHeight = webView.getContentHeight(); int webViewHeight = ...
SlidingMenu库是由Jeff Gilfelt开发的,它为Android应用提供了侧滑菜单的实现,支持左右两侧滑动,以及多种滑动模式,如顶部滑动、底部滑动等。这个库不仅提供了基本的滑动功能,还允许开发者自定义动画效果,调整...
6. **监听滚动状态**:通过实现OnScrollChangeListener接口,可以监听ScrollView的滚动状态,比如是否已经滚动到底部或顶部。这样,我们可以在达到边界时触发回弹效果。 7. **优化性能**:为了保证流畅的用户体验,...
4. **监听键盘状态**:通过注册`OnGlobalLayoutListener`监听器,我们可以检测到布局的变化,进而动态调整输入框的位置。 5. **使用CoordinatorLayout和Behavior**:在Android设计支持库中,CoordinatorLayout允许...
3. 对于Android,可能还需要考虑Webview的滑动冲突,可能需要禁用Webview的滑动事件。 4. 弹框关闭后,恢复事件和CSS样式:重新绑定scroll和touchmove事件,并将body或主要内容区域的`overflow`属性恢复为`auto`,...
例如,可以监听WebView的滑动事件,当达到顶部或底部时,通过JavaScript接口与原生代码通信,触发刷新或加载新的网页。 在实际应用中,为了提高开发效率和用户体验,许多开发者选择使用像SwipeRefreshLayout这样的...
例如,通过注入JavaScript接口,让网页监听滚动事件,当到达顶部或底部时,通知Android端执行刷新或加载更多数据的操作。此外,也有一些第三方库,如SmartRefreshLayout,提供了对WebView下拉刷新和上拉加载的支持。...
5. **监听滚动事件**:可以通过添加OnScrollChangeListener监听ScrollView的滚动事件,实现自定义功能,例如在滚动到底部时加载更多数据。 6. **性能优化**:由于ScrollView会一次性加载所有子视图,所以对于内容...
3. 滑动切换:如果有多张图片,用户应能通过滑动手势切换到下一张或上一张图片。 4. 返回功能:提供一个明显的返回按钮或手势,让用户可以退出图片查看模式回到之前的WebView界面。 为了实现这些功能,开发者可能...
为了增强用户体验,还可以添加一些额外的功能,如回弹效果(OverScroll)、手势检测(GestureDetector)以支持快速滑动到顶部或底部,以及添加状态栏和导航栏的透明度变化效果,使整个界面看起来更连贯。 在实际...
douBanList(滚动到底部加载新的,软缓存,懒加载) Droid Wall 手机防火墙.zip FBReader修改epub快速加载.rar FiveChess五子棋.zip Flashlight灯光.zip GetSDTree(简单SD卡文件浏览器) hotel宾馆系统.zip ImageView ...
5. **实现交互**:为了增强用户体验,可以监听WebView的滚动事件,或者通过`addJavascriptInterface()`方法实现JavaScript与Java代码的交互,比如点击新闻标题后跳转到详情页。 6. **处理错误**:添加WebViewClient...