横向选择控件
重写 onMeasure
- 理解MeasureSpec
* MeasureSpec 是一个32位的int值,前2位代表(specMode)测量模式 ,后30代表(specSize) 某种测量模式下的规格大小
* specMode 有三种模式 1 UNSPECIFIED,父容器不对VIew大小进行限制、2 AT_MOST,只指定最大的大小,具体看VIew本身(wrap_content)、 3 EXACTLY, 指定VIew的大小,(match_parent或指定值)。 - setMeasuredDimension(int measuredWidth, int measuredHeight);
- measureChildren(int widthMeasureSpec, int heightMeasureSpec);
重写onLayout
过程:在onMeasure获取测量值后将内部的view 通过layout函数画出 (理解类似贴位图)
解决滑动冲突
http://blog.csdn.net/xyz_lmn/article/details/12517911
重点: 事件拦截消费过程,当事件被消费上层的dispatchTouchEvent回返回true,不会向上传递事件,事件被拦截,不会向下传递,而是传递到同级的onTouchEvent,
1.onTouchEvent 2.onInterceptTouchEvent 3.dispatchTouchEvent
滑动
http://blog.csdn.net/guolin_blog/article/details/48719871
VIew滑动的三种方式 1 ScrollBy或scrollTo 、 2 Animator映像动画 、 layoutParam参数
Scroller的基本用法其实还是比较简单的,主要可以分为以下几个步骤:
1. 创建Scroller的实例
2. 调用startScroll()方法来初始化滚动数据并刷新界面
3. 重写computeScroll()方法,并在其内部完成平滑滚动的逻辑