网站大量收购独家精品文档,联系QQ:2885784924

《QQ侧滑之菜鸟学习总结.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《QQ侧滑之菜鸟学习总结

一.不同控件之间有相同的继承关系,自定义控件要先找准继承那个控件 二.继承的时候要重写构造函数,然后就是一些方法。LayoutInflater.from(context).inflate(ResourceID,class);一般是(R.,this) 三.使用时要用完整的类名,包名不可省略。 形式为:包名.类名 例如packageName.className/packageName.className 四、自定义viewGroup新的理解(以qq侧滑为例) 侧滑案例的详细分析,本次的viewGroup继承自HorizontalScrollView(注意该布局中只能有个子view,所以本次使用LinearLayout),利用其水平滚动的特性,实现侧滑。利用其能对滑动全过程的监控,实现缩放,以及透明度的变化。 操作的大致方式,qq侧滑看做是两个布局横向拼接到一块,也可以理解为是一个布局分成左右两部分,对左右两部分各自实施具体操作。自定义的viewGroup包括左右两部分,即是把左右两部分看做是他的两个第二级子view,因为继承自HorizontalScrollView,只能有一个子view,所以这两个子view(命名为leftMenu和mContent)在LinearLayout(命名为mWapper)之内。 自定义viewGroup中需要注意的三个重要方法 onMeasure方法,它的用处是,测量子view的宽度和高度,以及自己的宽度和高度。具体操作的代码如下: 第一步通过view.getChildAt();方法获取到指定view例如: mWapper=(LinearLayout) getChildAt(0); mMenu=(ViewGroup) mWapper.getChildAt(0); mContent=(ViewGroup)mWapper.getChildAt(1); view.getChidAt();方法的简单理解。文档解释为获取到指定的view通过指定一个数字。自己查找理解为,获取当前显示的第一个view(数字为0时),例如在一个listView中通过此方法可以获得当前显示的第一个item假如数字为一时,是显示的第一个item而非所有item中的第一个。 第二步,通过view.getLayoutParams().width();方法设置子view的宽度,此宽度是相对与父布局而言的,且单位是px。 关于此方法的简单理解,view.getWidth();方法获取的是XML 文件中的布局宽度,例如android:layout_width=”100dp”,且单位是dp。 第二个方法onLayout方法,设置子view的位置,即是leftMenu和mContent的位置。 这里有一段解释scrollTo()与scrollBy()的区别,我看了之后感觉很容易明白: 假设有一个View,它叫做SView。 如果想把SView从(0, 0)移动到(100, 100)。注意,这里说的(0, 0)和(100, 100),指的是SView左上角的坐标。那么偏移量就是原点(0, 0)到目标点(100, 100)的距离,即(0 , 0) - (100, 100) = (-100, -100)。 只需要调用SView.scrollTo(-100, -100)就可以了。请再次注意,scrollTo(int x, int y)的两个参数x和y,代表的是偏移量,这时的参照物是(0, 0)点。 然而,scrollBy()是有一定的区别的。scrollBy()的参照物是(0, 0)点加上偏移量之后的坐标。 这么描述比较抽象,举个例子。假设SView调用了scrollTo(-100, -100),此时SView左上角的坐标是(100, 100),这时再调用scrollBy(-20, -20),此时SView的左上角就被绘制到了(120, 120)这个位置。总结一下,scrollTo()是一步到位,而scrollBy()是逐步累加。 我的理解即是两个方法的参照物不同,但都是使一个物体偏移的方法。scrollTo(x,y);的方法是以原点为参照物的(向右和向下为负方向),即是屏幕左上角,它的参照物是固定的。而scrollBy(x,y);方法是以点(x,y)为参照物的。换句话说就是,scrollTo就是把View移动到屏幕的X和Y位置,也就是绝对位置。而scrollBy其实就是调用的scrollTo,但是参数是当前mScrollX和mScrollY加上X和Y的位置。 具体操作是利用view.scrollTo(leftMenuWidth,0);使得左边的leftMenu布局偏移到屏幕之外,偏移的宽度是其宽度。同时在屏幕中只显示mContent,所以mConten

文档评论(0)

yingrong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档