/******************************************************************************* * Copyright 2011, 2012 Chris Banes. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.aincc.lib.ui.widget.list.pulltorefresh; import android.content.Context; import android.util.AttributeSet; import android.util.FloatMath; import android.webkit.WebChromeClient; import android.webkit.WebView; import com.aincc.lib.R; public class PullToRefreshWebView extends PullToRefreshBase<WebView> { private final OnRefreshListener defaultOnRefreshListener = new OnRefreshListener() { @Override public void onRefresh() { mRefreshableView.reload(); } }; private final WebChromeClient defaultWebChromeClient = new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress == 100) { onRefreshComplete(); } } }; public PullToRefreshWebView(Context context) { super(context); /** * Added so that by default, Pull-to-Refresh refreshes the page */ setOnRefreshListener(defaultOnRefreshListener); mRefreshableView.setWebChromeClient(defaultWebChromeClient); } public PullToRefreshWebView(Context context, AttributeSet attrs) { super(context, attrs); /** * Added so that by default, Pull-to-Refresh refreshes the page */ setOnRefreshListener(defaultOnRefreshListener); mRefreshableView.setWebChromeClient(defaultWebChromeClient); } public PullToRefreshWebView(Context context, Mode mode) { super(context, mode); /** * Added so that by default, Pull-to-Refresh refreshes the page */ setOnRefreshListener(defaultOnRefreshListener); mRefreshableView.setWebChromeClient(defaultWebChromeClient); } @Override protected WebView createRefreshableView(Context context, AttributeSet attrs) { WebView webView = new WebView(context, attrs); webView.setId(R.id.webview); return webView; } @Override protected boolean isReadyForPullDown() { return mRefreshableView.getScrollY() == 0; } @Override protected boolean isReadyForPullUp() { float exactContentHeight = FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale()); return mRefreshableView.getScrollY() >= (exactContentHeight - mRefreshableView.getHeight()); } }