1. 程式人生 > >WebView滑動監聽

WebView滑動監聽

滑動監聽的話是需要在WebView基礎之上在加強一下,因為在WebView沒有直接監聽滑動的方法,看WebView的原始碼則會發現有一個 protected void onScrollChanged(int l, int t, int oldl, int oldt) ; 這個方法。是受到保護的所以我們無法直接使用,所以我們寫一個加強的WebView,利用介面回撥。 package com.song.webviewtest; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.webkit.WebView; public class ScrollWebView extends WebView { public OnScrollChangeListener listener; public ScrollWebView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public ScrollWebView(Context context, AttributeSet attrs) { super(context, attrs); } public ScrollWebView(Context context) { super(context); } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); float webcontent = getContentHeight() * getScale();// webview的高度 float webnow = getHeight() + getScrollY();// 當前webview的高度 Log.i("TAG1", "webview.getScrollY()====>>" + getScrollY()); if (Math.abs(webcontent - webnow) < 1) { // 已經處於底端 // Log.i("TAG1", "已經處於底端"); listener.onPageEnd(l, t, oldl, oldt); } else if (getScrollY() == 0) { // Log.i("TAG1", "已經處於頂端"); listener.onPageTop(l, t, oldl, oldt); } else { listener.onScrollChanged(l, t, oldl, oldt); } } public void setOnScrollChangeListener(OnScrollChangeListener listener) { this.listener = listener; } public interface OnScrollChangeListener { public void onPageEnd(int l, int t, int oldl, int oldt); public void onPageTop(int l, int t, int oldl, int oldt); public void onScrollChanged(int l, int t, int oldl, int oldt); }} 然後,利用這個加強的WebView就可以監聽了
package com.song.webviewtest; import java.util.HashMap; import java.util.Map;import android.app.Activity; import android.os.Bundle;import android.os.Handler; import android.os.Message; import android.webkit.WebSettings; import com.song.webviewtest.ScrollWebView.OnScrollChangeListener; public class WebViewActivity extends Activity { private String url = "http://192.168.30.199:8080/song/test.html"; //執行動作 public static final int SELECT_IMAGE = 0; // 開啟相簿 public static final int OPEN_PAGE = 1; // 跳轉其他特定頁面 public static final int CLOSE_OR_BACK = 2; // 關閉或 private ScrollWebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webviw); getIntentDatas(); initView(); } private void getIntentDatas() { // TODO Auto-generated method stub url = getIntent().getStringExtra("url"); } private void initView() { mWebView = (ScrollWebView) findViewById(R.id.webview); //或的WebView的Setting WebSettings settings = mWebView.getSettings(); //設定支援js,看方法名字就知道啥意思 settings.setJavaScriptEnabled(true); //mWebView.addJavascriptInterface(new JavaScriptInterface(handler), "Android"); mWebView.setOnScrollChangeListener(new OnScrollChangeListener() { @Override public void onScrollChanged(int l, int t, int oldl, int oldt) { //滑動中 } @Override public void onPageTop(int l, int t, int oldl, int oldt) { //滑動到頂部 } @Override public void onPageEnd(int l, int t, int oldl, int oldt) { //滑動到底部 } }); //載入網頁路徑 mWebView.loadUrl(url); } }

相關推薦

測量webview滑動的自定義控制元件

public class ScrollWebView extends WebView{ private OnScrollChangedCallback mOnScrollChangedCallback; public ScrollWebView(final Context

WebView滑動

滑動監聽的話是需要在WebView基礎之上在加強一下,因為在WebView沒有直接監聽滑動的方法,看WebView的原始碼則會發現有一個 protected void onScrollChanged(int l, int t, int oldl, int oldt) ;

ListView滑動和設置點擊事件

image null ram protected item import idle 滾動 pri viewholder_item.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout

HTML編程之滾輪滑動效果的實現

false eve function dom 滾輪 event als 瀏覽器 html 在前端頁面制作過程中,我們經常會發現有時候某些動作需要滾動滑輪來實現,那麽對於初學者來說可能不明白是如何實現的,對於這個問題,下面就來跟大家分析一下,如何用滾輪滑動監聽效果的實現。 源

UI_條目滑動

package com.example.d_12; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import andro

Android RecyclerView的滑動

1 RecyclerView 的滑動監聽 1.1 RecyclerView 設定滑動監聽 <span style="color:#000000"><code class="language-java"> mRecyclerView.setOnScrollListene

Android ScrollView滑動

     因為專案裡用到了ScrollView, 並需要實現類似於ListView的滑動監聽回撥,所以自定義了一套實現方式支援這些事件, 基本滿足了業務需求;public interface OnMyScrollListener { int SCROLL_STATE_

Android ScrollView的滑動

在Android開發中,很多時候都要用到ScrollView來進行頁面的滾動效果。那如果可以監聽到使用者的滾動狀態來分別進行設定頁面效果,APP的外觀上肯定是可以加分的。 原生的ScrollView並沒有實現類似ListView的onScrollLis

Js實現滑鼠滾輪滑動

在別人部落格的基礎上改寫了一個js實現滑鼠滾輪事件的監聽: windowAddMouseWheel(); function windowAddMouseWheel() { var scrollFunc = function (e) { e = e |

RecyclerView滑動實現button消失與展現動畫

需求說明: 由於介面大小限制,我們寫完listview或者recyclerView展現圖片後已經佔據了整個螢幕,螢幕下方還有個button,我們需要在滑動圖片的時候button隱藏,出現圖片的時候展現button。 需求分析: 一、給receycleview新增滑動監聽事件

NestedScrollView 內嵌 RecyclerView 滑動問題

1. 監聽思路 NestedScrollView 內嵌 RecyclerView 時,RecyclerView的滑動監聽很大可能監聽不到,所以我們只能通過對NestedScrollView的監聽進行R

Android中自定義ScrollView的滑動事件

專案結構: 1.LazyScrollView類(自定義ScrollView) package android.zhh.com.myapplicationscrollview; /** * Created by sky on 2017/3/19. */ impor

2016.07.31學習筆記---ViewPager滑動的引數解釋

以前大家都是用viewpager.setOnPageChangeListener 來監聽ViewPager的事件,但是已經過時了, 下面我給大家帶來最新的方法。 viewpager.addOnPage

Android中自定義ScrollView的滑動事件,並在滑動時漸變標題欄背景顏色

效果圖 滑動前: 滑動中: 滑動到底部: 專案結構 ObservableScrollView package com.jukopro.titlebarcolor; import android.content.Context; import android.u

ListView的onScrollListener滑動事件引數詳解

new OnScrollListener() { boolean isLastRow = false; @Override p

Fragment中載入網頁(WebViewBack鍵 ,實現返回上一頁的功能

首先建立一個抽象類BackHandledFragment,該類有一個抽象方法onBackPressed(),所有BackHandledFragment的子類在onBackPressed方法中處理各自對Back事件的消費邏輯。onBackPressed返回布林值,宿主Acti

ListView與RecyclerView的滑動

ListView mListView.setOnScrollListener(new OnScrollListener() { @Override public void onScroll(AbsListView

Activity中的滑動事件

import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; import andro

關於Android原生整合5+webviewwebview返回時,執行兩次onkey方法問題的解決

 setOnKeyListener之所以執行兩次是因為都down和up佔用了,解決方法是KeyEvent.getAction()==KeyEvent.ACTION_DOWN或者KeyEvent.getAction()==KeyEvent.ACTION_UP的時候讓他執行re

android webView滑動距離和標題欄顏色漸變

重寫webView之 X5WebView import android.annotation.SuppressLint; import android.content.Context; import android.graphics.drawable.Drawable;