1. 上下拉控件,一般分为3个部分,refresh_headview,load_moreview,和中间的一部分view。
中间的view会随着操作者上下划拉的操作和移动位置,下拉的时候,露出头部的view,上拉的时候露出底部的view,这样就组成了一个上下拉刷新的控件了
2.refresh_headview放在view的上面,同时也是放在手机屏幕的上面,假如headview的高度为200dp,那么view的位置从-200dp来放置,同理,load_moreview,放
在view的下面,同时也是在手机屏幕的下面,这样,没有上下划拉view的时候才会显示出来,而如果没有滑动的时候,就只能看到中间的view。
3.一般分为6个状态
1.实例化init 2.释放刷新release_to_refresh 3,刷新refreshing 4,释放加载release_to_load 5,加载loading 6. 完毕done
4.通过事件截取和事件分发来获取起始点和滑动的距离,requestLayout(),来获取布局的展示,然后,改变用以上的6中状态。
5.子布局
protected void onLayout(boolean changed, int l, int t, int r, int b) { //子类的放置 if (!isLayout) { // 这里是第一次进来的时候做一些初始化 refreshView = getChildAt(0); pullableView = getChildAt(1); loadmoreView = getChildAt(2); isLayout = true; initView()