美文网首页
android自定义控件总结

android自定义控件总结

作者: 我就是杨过 | 来源:发表于2018-07-03 18:14 被阅读0次

    自定义view的学习分为三部分

    自定义View基础知识

    自定义的分类 (参考《Android开发艺术探索》)

    • 继承特定的view
      • 使用场景分析: 比如TextView(扩展功能或者使用字体等)
    • 继承View类
      • 使用场景分析:实现规则的效果,这种效果不方便通过布局的组合形式来达到,因此需要使用绘制的方式来实现,即重写OnDraw方法。但是比较复杂,需要自己支持wrap_content,并且padding也需要自己处理。
    • 继承特定的ViewGroiup (比如LinearLayout)
      • 使用场景分析:几种view组合在一起显示的时候,可以采用这种方式。只需要简单的处理。
    • 继承ViewGroup派生特殊的Layout
      • 使用场景分析:除了系统提供的Linear,RelativeLayout, FrameLayout之外,重新定义一种新的布局。几种view组合在一起显示的时候,可以采用这种方式。与上面方式的不同在于要更复杂一些,需要处理ViewGroup的测量和布局两个过程,同时也要处理子元素的测量和布局过程_

    使用自定义属性

    • 在很多情况下 使用自定义view都需要使用自定义属性。
    • 在布局文件中像android:layout_width 之类的以android: 开头的属性都是系统自己带的属性。
    使用自定义属性的步骤
    • 第一步 在values目录下面创建自定义属性的XML,文件名称本身没有什么限制,可以随便取。如下所示:


      自定义属性
    • 这个属性的集合名称是 CycleView,用上面的标签来包裹。
    • 上面定义了一个格式为“color”的属性“circle_color”, 格式除了颜色之外,还有其他格式,比如指定资源id的“reference”, 指定尺寸的dimension,指定基本数据类型的“string”,“integer”,“boolean”等。 TODO 整理自定义属性的format

    • 第二步 在view的构造方法中解析自定义属性的值并且做相应的处理。如下图所示


      attr2.jpg
    • 首先加载自定义属性集合CircleView,然后根据CircleView属性集合加载circle_color属性。某个具体自定义属性都是有id的,比如这里id为 R.styleable.CircleView.circle_color, 所以属性的id是R.styleable. + “属性集合名称” + “具体的属性名字”

    • 第三步 在布局文件中使用自定义属性。如下图所示


      attr3.jpg
    • 自定义属性的前缀是 “app”,使用这个前缀的时候必须添加schemas声明:xmlns:app="http://schemas.android.com/apk/res-auto"。否则找不到自定义属性。
    • 还有另外一种声明方式就是 xmlns:app="http://schemas.android.com/apk/res/ + "应用的包名",一般使用第一种方式来做。

    • 完整的自定义属性 如下所示


      attr4.jpg
      arrt5.jpg

    通过实例学习使用自定义view

    相关文章

      网友评论

          本文标题:android自定义控件总结

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