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 个回复

正序浏览
谢谢分享!
回复 举报
厉害啊,前排
回复 举报
很有用,多谢分享
回复 举报
666666666666666666666
回复 举报
楼主 6666666666哈
回复 举报
非常有用。谢谢分享。
回复 举报
每天保持好心情
回复 举报
代码敲烂,键盘过万
回复 举报
谢谢分享,,
回复 举报
谢谢分享
回复 举报
楼主666666666
回复 举报
感谢楼主分享,学习。。。,一起加油
回复 举报
什么叫做显示初始化
回复 举报
什么叫做显示初始化
回复 举报
6666666666666
回复 举报
很有用啊,加油!
回复 举报
很有用,谢谢
回复 举报
66666666666
回复 举报
楼主说的不错,学习。。。说的好,一起加油
回复 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马