Android自定义控件的总结

Android自定义控件的总结:
一、原理
https://blog.csdn.net/zhaihaohao1/article/details/78460228
https://blog.csdn.net/zhaihaohao1/article/details/78286464

二、View的生命周期
https://blog.csdn.net/zhaihaohao1/article/details/78500197

三、自定义控件View和ViewGrounp对应的例子
3.1继承View
通讯录
https://blog.csdn.net/zhaihaohao1/article/details/78410166
开关
https://blog.csdn.net/zhaihaohao1/article/details/78286464
https://blog.csdn.net/zhaihaohao1/article/details/80772866
水波纹
https://blog.csdn.net/zhaihaohao1/article/details/78488694
3.2继承ViewGrounp
ViewPager
https://blog.csdn.net/zhaihaohao1/article/details/80434499
https://blog.csdn.net/zhaihaohao1/article/details/80564569
侧滑删除菜单
https://blog.csdn.net/zhaihaohao1/article/details/78449003
ListView的下拉刷新
https://blog.csdn.net/zhaihaohao1/article/details/78563792
ListView的上拉加载
https://blog.csdn.net/zhaihaohao1/article/details/78563666

四、事件的传递:
4.1理论
https://blog.csdn.net/zhaihaohao1/article/details/78338270
4.2侧滑删除菜单
反拦截ListView的事件
拦截子控件的事件
都有注释:
https://blog.csdn.net/zhaihaohao1/article/details/78449003

五、各种坐标代表的意思
1、event.getX()
event.getX()指的是当前控件(MySlideLayout)左上方为原点坐标,X轴上的坐标,向右越大
坐标和按下的位置有关系(比如这个控件宽度铺满屏幕,在左边按下开始坐标startX很小,在中间按下坐标startX就较大)
event.getY() 同理

2、getScrollX()
getScrollX()就是当前视图(MySlideLayout)相对于自己左上角为原点坐标,的偏移量
child.getScrollX()当前视图(MySlideLayout)子控件相对于自己左上角为原点坐标,的偏移量
当滑动的是当前的控件(MySlideLayout)时,getScrollX()有值,(本例滑动的是自己),child.getScrollX()是0;
当滑动控件是子控件时child.getScrollX()有值,getScrollX()是0
简单的说是滑动谁,谁的getScrollX()有值
从左滑到右是负值,从右到左是正值
getScrollY() 同理

3 、scrollTo(int x, int y)
scrollTo中的dX,从左滑到右是负值,从右到左是正值
scrollTo中的dX,中的x就是(getScrollX() - distanceX),这是公式
(distanceX = endX - startX;)
代表的意思就是:将父视图左上角定为(0,0),在移动这个屏幕的左上角到父视图的点(x,y)处,
(注意:此处的x,y是根据父视图的坐标系来定的)

4、startScroll(int startX, int startY, int dx, int dy)
scroller.startScroll中的坐标
中第一个参数startX,参照父视图为原点坐标的坐标系,滑屏时经常使用getScrollX()(代表品目左边缘)
中第三个参数dx,表示正值向左滑,负值向右滑。
公式:目标 - getScrollX();
这里要移动的目标是控件的宽,所以就是int dx, = delViewWidth - getScrollX();
侧滑删除菜单有详细的注释
https://blog.csdn.net/zhaihaohao1/article/details/78449003

六、实现滑动的方法:
6.1 scrollTo(int x, int y); scrollBy(int x, int y);实现
理论:
https://blog.csdn.net/zhaihaohao1/article/details/78460007
https://blog.csdn.net/zhaihaohao1/article/details/78479678
https://blog.csdn.net/guolin_blog/article/details/48719871
例子:
https://blog.csdn.net/zhaihaohao1/article/details/80434499

6.2 Scroller对象实现
https://blog.csdn.net/zhaihaohao1/article/details/80564569

6.3直接使用View绘制
https://blog.csdn.net/zhaihaohao1/article/details/80772866

6.4属性动画

猜你喜欢

转载自blog.csdn.net/zhaihaohao1/article/details/80874957