自定义View那些事【二】
涨薪机密——新潮流新技术、新框架,资源以后不定期更新,
学Android的看过来,项目里这个截图,眼熟吧,哪个知识点是自定义View?能讲出来怎么实现的吗? 如何自定义View中子View的位置
此处由于你要自定义的View中是包含子View的,那么你应该继承ViewGroup,并且通常情况下,我们为了省去实现onMeasure方法,那么就可以继承系统提供的某个布局,如FrameLayout。自定义子View的位置,那么需要重写onLayout方法了,该方法是允许你随意指定子View位置的。 现在我们设定需求,要求实现一个ViewGroup,它的子View是从右往左边排列的。代码如下: 效果图如下:
总结,通过layout的方法来控制View的位置,这个属于比较简单的。
如何让View随手指移动进行变化
要实现这个,那么你需要完成2个点: 1. 监听手指移动的距离 2. 让View进行一些变化 对于第一点,监听手指移动的距离,这个很简单,可以重写onTouch方法,获取手指移动距离,也可以借助ViewDragHelper所封装的方法来监听手指的移动。对于通过onTouch方法来获取手指移动距离的代码略过,下面展示一下通过ViewDragHelper来获取手指距离的代码,你需要熟悉一下ViewDragHelper的用法才能看懂下面的代码,clampViewPositionHorizontal方法的dx参数就是手指移动的距离,代码如下:
所以,获取手指移动距离很简单,我们主要把精力放在让View进行一些变化上。 这些变化一般是的是缩放,平移,透明,旋转的变化,这些变化Android都为我们提供了对应的操作View属性的方法,代码如下: 当然如果你需要让View执行某些动画效果,那么你要借助属性动画了,如果你想自定义动画效果,那么就需要使用ValueAnimator,或者继承Animaton类实现自定义动画。 总结以上总结了我们自定义View中最常用的情景,当然还有其他很多情况。不过我们可以在这3种基础上举一反三。遇到复杂的效果,就分离模块,一点一点实现,自定义View也就那点事。
其他精华推荐:
|