前言:
在android开发中,使用最多的数据刷新方式就是下拉刷新了,而完成此功能我们使用最多的就是第三方的开源库PullToRefresh。现如今,google也忍不住推出了自己的下拉组件SwipeRefreshLayout,下面我们通过api文档和源码来分析学习如何使用SwipeRefreshLayout。
一, SwipeRefreshLayout的具体用法
1、setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener):设置手势滑动监听器。
2、setProgressBackgroundColor(int colorRes):设置进度圈的背景色。
3、setColorSchemeResources(int… colorResIds):设置进度动画的颜色。
4、setRefreshing(Boolean refreshing):设置组件的刷洗状态。
5、setSize(int size):设置进度圈的大小,只有两个值:DEFAULT、LARGE
二,具体使用
1,在一个webview.xml布局文件
<LinearLayout 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" >
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_contain"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/web_show"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
2,页面代码使用
private WebView webView;
private SwipeRefreshLayout swipeRefresh;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_swipy_webview);
initView();
}
private void initView(){
//SwipeRefresh
swipeRefresh = (SwipeRefreshLayout)findViewById(R.id.swipe_contain);
swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//重新加载刷新页面
webView.loadUrl(webView.getUrl());
}
});
//首次启动刷新页面
swipeRefresh.post(new Runnable() {
@Override
public void run() {
swipeRefresh.setRefreshing(true);
webView.loadUrl(webView.getUrl());
}
});
swipeRefresh.setColorSchemeResources(android.R.color.holo_blue_light,
android.R.color.holo_red_light,
android.R.color.holo_orange_light,
android.R.color.holo_green_light);
//WebView
webView = (WebView)findViewById(R.id.web_show);
webView.loadUrl("http://www.stay4it.com/");
//添加javaScript支持
webView.getSettings().setJavaScriptEnabled(true);
//取消滚动条
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
//触摸焦点起作用
webView.requestFocus();
//点击链接继续在当前browser中响应
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){
//隐藏进度条
swipeRefresh.setRefreshing(false);
}else if(!swipeRefresh.isRefreshing()){
swipeRefresh.setRefreshing(true);
}
}
});
}