zoukankan      html  css  js  c++  java
  • Android网络课程笔记-----自定义控件的方法和技巧

      

     
    一、自定义控件的好处
          1. 做到特殊的效果
          2. 差异化
          3. 突破系统的限制
          4. 提高用户体验
     
    二、如何自定义控件
          简单的斜角的文本控件
          1. 创建一个类,继承View或它的子类
          2. 添加一个参数的构造方法
          3. 重写onDraw()方法
                    canvas                 画布
                    paint                   画笔
     
    三、如何使自定义控件动态化
          原理:onDraw()方法被触发
          通过方法: invalidate()
          
    四、如何定义自定义控件的属性
           目的:使自定义控件的使用更加方便、灵活
           步骤:
           1. 增加两个参数的构造方法
               目的:能够读取到开发者在布局文件中编辑的组件属性
           2. 定义属性
               在valuse中创建一个attrs.xml
               声明属性:         
         <declare-styleable name="MyTextView">
            <attr name="content" format="string" />
            <attr name="contentColor" format="color" />
            <attr name="contentSize" format="dimension" />
        </declare-styleable>
     
    3. 在两个参数的构造方法中,读取开发者在布局文件中
        使用的属性值
        代码:
      TypedArray o = context.obtainStyledAttributes(attrs, R.styleable.MyTextView);
      mContent = o.getString(R.styleable.MyTextView_content);
      mColor = o.getColor(R.styleable.MyTextView_contentColor, Color.BLACK);
      mDimen = o.getDimension(R.styleable.MyTextView_contentSize, 18);
      o.recycle();
     
              4. 使用属性
                  4.1 在布局中创建新的命名空间
                    xmlns:myapp="http://schemas.android.com/apk/res/com.yuchen.test"
                   注意:com.yuchen.test为应用的包名,不是代码的包名
                  42. 在布局中使用自定义属性
                                   myapp:content="自定义属性"
            myapp:contentColor="#0000FF"
            myapp:contentSize="30sp"
                 
    五、更简单的创建自定义控件的技巧
           创建Android Object,选择CustomView
     
    六、如何学会更多自定义控件的绘制图形的方法技巧
          看ApiDemos中的Graphics中的例子,
          里面所有的都是自定义控件
  • 相关阅读:
    leetcode 13. Roman to Integer
    python 判断是否为有效域名
    leetcode 169. Majority Element
    leetcode 733. Flood Fill
    最大信息系数——检测变量之间非线性相关性
    leetcode 453. Minimum Moves to Equal Array Elements
    leetcode 492. Construct the Rectangle
    leetcode 598. Range Addition II
    leetcode 349. Intersection of Two Arrays
    leetcode 171. Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/vijay/p/3558292.html
Copyright © 2011-2022 走看看