也许之前下拉刷新你可能会用到一些第三方开源库,如PullToRefresh, ActionBar-PullToRefresh等,但现在已经有官方的组件了---SwipeRefreshLayout,SwipeRefreshLayout是Google在support v4 19.1版本的library更新的一个下拉刷新组件,使用起来很方便,可以很方便的实现Google Now的刷新效果。使用官方自带的控件能够保证通用性以及风格。SwipeRefreshLayout是继承ViewGroup,来实现下拉刷新,它可以包含其他组件,使用过后感觉很简单。
.support.v4.widget.SwipeRefreshLayout>
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity implements OnRefreshListener{
private SwipeRefreshLayout swipeRefreshLayout;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
swipeRefreshLayout.setRefreshing(false);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swip);
swipeRefreshLayout.setOnRefreshListener(this);
swipeRefreshLayout.setColorScheme(android.R.color.holo_blue_bright,
android.R.color.holo_green_light,
android.R.color.holo_orange_light,
android.R.color.holo_red_light);
}
@Override
public void onRefresh() {
handler.sendEmptyMessageDelayed(1, 5000);
}
}
在上面的onRefresh()函数中实现获取数据功能以及更新数据,当更新完数据后,调用swipeRefreshLayout.setRefreshing(false);来关闭刷新。