A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

自定义View那些事【二】
涨薪机密——潮流新技术、新框架资源以后不定期更新,
  


学Android的看过来,项目里这个截图,眼熟吧,哪个知识点是自定义View?能讲出来怎么实现的吗?

上一篇说了如何自定义View显示的内容,下面来讲讲如何自定义View中子View的位置以及如何让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也就那点事。



其他精华推荐:

评分

参与人数 1黑马币 +1 收起 理由
魏昭 + 1 很给力!

查看全部评分

56 个回复

倒序浏览
很有用,多谢分享
回复 使用道具 举报 1 0
很有用,多谢分享
回复 使用道具 举报
很有用,多谢分享
回复 使用道具 举报
学习一下
回复 使用道具 举报
学习学习 都是大神啊
回复 使用道具 举报
还没学到   表示看不懂
回复 使用道具 举报
虾饺不瞎搞 来自手机 初级黑马 2016-7-11 23:07:44
8#
很有用,,哈哈
回复 使用道具 举报
讲解的好细致哦
回复 使用道具 举报
谢谢楼主,楼主辛苦了,黑马加油
回复 使用道具 举报
加油!顶一个
回复 使用道具 举报
谢谢  加油加油~~~~
回复 使用道具 举报
qinxuezilu1314 来自手机 中级黑马 2016-7-14 00:08:27
13#
赞一个。。。。。。。
回复 使用道具 举报
强势顶帖!!!
回复 使用道具 举报
还没学到   同表示看不懂
回复 使用道具 举报
很有用,多谢分享
回复 使用道具 举报
很有用啊|||||||||加油
回复 使用道具 举报
很有用啊|||||||||加油
回复 使用道具 举报
很有用啊|||||||||加油
回复 使用道具 举报
很有用啊|||||||||加油
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马