在github上有个开源项目pull-to-refresh,就是一个实现下拉、上拉刷新功能的第三方类库,引用这个项目的时候需要导入包、修正错误等等过于麻烦,所以谷歌官方就出了一个控件并集合到SDK里面,可直接调用,也就是SwipeRefreshLayout。
首先在xml里面直接添加SwipeRefreshLayout,用它将所需要刷新的布局包裹起来:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
然后再activity中添加代码,找到控件,并给控件增加一个监听事件,执行的动作就是webview重新加载一次网址,从而实现webview的刷新,刷新时间为4000毫秒,swipeLayout.setRefreshing(false);这句话是必须的,不然刷新的动作不会停下来,一直出来刷新的动作,所以不会出现刷新的结果。
swipeLayout = (SwipeRefreshLayout)findViewById(R.id.swipe_container);
swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
webview.loadUrl(webview.getUrl());
swipeLayout.setRefreshing(false);
}
}, 4000);
}
});
顶部刷新的动作可以设置颜色,最多可以设置4种颜色:
swipeLayout.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);
如果是activity里面加载多个fragment里面的webview要刷新,同样首先得找到fragment里面的控件,然后让控件从新加载网址的动作,这些动作需要新写一个方法,而且必须用线程,不然会报错,最后将新写的方法添加到fragment实例化之后,跟webview的JS交互类似。