美文网首页Android自定义View
自定义View和ViewGroup套路总结

自定义View和ViewGroup套路总结

作者: 世道无情 | 来源:发表于2018-03-28 08:14 被阅读8次

    1. 说明


    前边我们写了关于自定义View的小示例,分别是自定义TextView、仿QQ运动步数、玩转字体变色、仿淘宝评分控件、字母选择列表,自定义ViewGroup是我们上节课写的流式布局,那么我们这节课就来总结下,写自定义View和ViewGroup的套路。

    2. 套路


    2.1>:自定义View套路总结:

    2.1.1>:在values下创建attrs.xml,写自定义属性,然后在自定义View中获取自定义属性,达到配置的效果;

    2.1.2>:复写onMeasure()方法,用于测量计算自己的宽高,前提是继承自View,如果是继承系统已有的控件,比如TextView、Button,系统已经给你计算好了宽高,你就不需要复写onMeasure()方法了,比如之前写的 玩转字体变色,直接继承TextView,就没有复写onMeasure()方法;

    2.1.3>:复写onDraw()方法,用于绘制自己的显示,看你应该显示成什么样子;
    常见demo比如之前写的:自定义TextView、仿QQ运动步数、玩转字体变色

    如果涉及与用户交互的话,就需要处理onTouchEvent()事件:

    比如之前写的:仿淘宝评分控件、字母选择列表;

    2.2>:自定义ViewGroup套路总结

    2.2.1>:自定义属性,在自定义ViewGroup中获取自定义属性,达到配置的效果,自定义ViewGroup一般不需要自定义属性;
    2.2.2>:复写onMeasure()方法,for循环测量子View的宽高,根据子View的宽高来计算自己的宽高;
    2.2.3>:onDraw()方法默认不会调用,如果需要绘制的话,就需要实现dispatchDraw()方法;
    2.2.4>:onLayout()用于摆放子View,前提子View是可见的,不是GONE的情况;
    2.2.5>:在很多情况下,我们一般不会直接继承 ViewGroup,而是往往继承系统已经提供好的ViewGroup,比如ViewPager、ScrollView、RelativeLayout;
    因为如果继承自ViewGroup,需要自己去复写onMeasure()、onLayout()方法,然后需要自己去测量和摆放子View,会比较麻烦,而我们继承 ViewPager、ScrollView、RelativeLayout的话,就不需要我们去管onMeasure()、onLayout()、onDraw(),所以我们一般是继承系统提供好的这些ViewGroup;

    相关文章

      网友评论

        本文标题:自定义View和ViewGroup套路总结

        本文链接:https://www.haomeiwen.com/subject/yxqhcftx.html