ObservableScrollView 实现粘性头部
2016-03-09 18:15
239 查看
public class ObservableScrollView extends ScrollView { private Callbacks mCallbacks; public ObservableScrollView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (mCallbacks != null) { mCallbacks.onScrollChanged(t); } } @Override public boolean onTouchEvent(MotionEvent ev) { if (mCallbacks != null) { switch (ev.getActionMasked()) { case MotionEvent.ACTION_DOWN: mCallbacks.onDownMotionEvent(); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: mCallbacks.onUpOrCancelMotionEvent(); break; } } return super.onTouchEvent(ev); } @Override public int computeVerticalScrollRange() { return super.computeVerticalScrollRange(); } public void setCallbacks(Callbacks listener) { mCallbacks = listener; } public static interface Callbacks { public void onScrollChanged(int scrollY); public void onDownMotionEvent(); public void onUpOrCancelMotionEvent(); } }设置scollview 属性
scrollView.setCallbacks(this);scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {onScrollChanged(scrollView.getScrollY());}});实现callback 方法
@Overridepublic void onScrollChanged(int scrollY) {relayout_categary.setTranslationY(Math.max(viewPlaceHolder.getTop(), scrollY));}
相关文章推荐
- 横竖屏检测
- Last_IO_Error: error connecting to master 'tl@192.168.199.151:3306'
- hihocoder1014 : Trie树
- 判断两个MAC地址是否相邻
- 深度学习入门:Fully Convolutional Networks for Semantic Segmentation
- nginx学习七 高级数据结构之动态数组ngx_array_t
- C++ 总结
- redis基本命令之一:字符串、散列、列表
- centos系统下实现ssh无密码登陆
- win7操作系统下,如何配置ubuntu 虚拟机使其能上网
- Deep learning的一些教程[rz]
- 一起看代码来玩玩QT之23 audioRecord
- iosUI篇- 多控制器和导航控制器简单介绍
- vim强大指令总结
- [LeetCode 260] Single Number III 详解
- Eclipse 安装反编译插件jadClipse(转)
- hibernate 与mybatis 的区别 和特点
- SwipeRefreshLayout+RecyclerView 实现上拉追加功能
- Struts2的简单认识
- Robotium入门