Android webview 下拉刷新

今天由于业务需要,需要对webview下来刷新,但webview肯定没这功能呀,于是就想,在用xlistview把webview放在头部,下拉webview时,就重新加载webview,但这样说不定,可能照成滑动冲突。于是,在stack overflow找到了不错的解决方案。

SwipeRefreshLayout 是谷歌官方下拉刷新控件,4.0以下的版本需要用到 Android-support-v4.jar包才能用到。
SwipeRefreshLayout 使用起来是非常简单的,只需要在可以滑动的控件外层添加即可,如:WebView、ListView和ScroolView.

demo例子如下:
public class MainActivity extends Activity {

private WebView webView;
private WebSettings webSettings;
private SwipeRefreshLayout swipeLayout;
private String linkUrl="https://www.baidu.com/";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    swipeLayout = (SwipeRefreshLayout)findViewById(R.id.swipe_container);
    // 设置刷新监听器
    swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

        @Override
        public void onRefresh() {
            //重新刷新页面
            // webview.loadUrl(webview.getUrl());
            webView.reload();
        }
    });

    //设置进度条渐变的颜色
    swipeLayout.setColorScheme(R.color.holo_blue_bright,
            R.color.holo_green_light, R.color.holo_orange_light,
            R.color.holo_red_light);

    //初始化webview
    initwebview();
}

private void initwebview(){
    webView= (WebView) findViewById(R.id.webview);
    webSettings= webView.getSettings();
    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webSettings.setSupportZoom(false);
    webSettings.setBuiltInZoomControls(false);
    webSettings.setAppCacheMaxSize(1024 * 1024 * 9);// 设置缓冲大小
    webSettings.setAllowFileAccess(true);
    webSettings.setAppCacheEnabled(true);
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    });

    //设置进度条
    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            if (newProgress == 100) {
                //隐藏进度条
                swipeLayout.setRefreshing(false);
            } else {
                if (!swipeLayout.isRefreshing())
                    //显示进度条
                    swipeLayout.setRefreshing(true);
            }

            super.onProgressChanged(view, newProgress);
        }
    });
    webView.loadUrl(linkUrl);
}

}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值