今天打开Boss直聘,看到他刷新的时候,进度条的颜色是变化的,感觉很有美感。当然,我在看到第一眼的时候,我便看出他使用的控件便是谷歌官方所推荐的SwipeRefreshLayout。
以前使用SwipeRefreshLayout的时候,我们进度条只有一种颜色,但是我隐隐约约的记得那个setColorSchemeResources(int...colors)
里面的参数是一个泛型参数,我们可以为我们的进度条设置多种颜色
代码如下:
mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.mSwipeRefresh);
// mSwipeRefreshLayout.setColorSchemeResources(R.color.colorPrimary);
// mSwipeRefreshLayout.setColorSchemeResources(R.color.red, R.color.orange, R.color.yellow, R.color.green, R.color.colorPrimary,
// R.color.mediumturquoise, R.color.darkviolet);
mSwipeRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.lightgreen),getResources().getColor(R.color.colorPrimary),getResources().getColor(R.color.red),getResources().getColor(R.color.greenyellow));
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
refreshFruits();
}
});
设置进度条颜色有两种方法:
setColorSchemeResources(int ...colorResIds);
这个方法直接传入colors.xml中的color资源文件R.color.xxx
setColorSchemeColors(int ...colors)
这个方法传入的Color值,我们可以使用getResources().getColor()
获取Color值,但是这种方式已经过时,我们也可以直接使用getColor()
获取Color值,不过要求android最小Api为23.
随便看看SwipeRefreshLayout的其他方法:
1 setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener)
设置监听者 当 通过刷新手势 引起 刷新 的时候 接收 通知
2 setRefreshing(boolean refreshing)
通知部件刷新状态改变了
refreshing View是否显示刷新进度