自定义View

                                              自定义View 

  版权声明:本文为博主原创文章,未经博主允许不得转载。

    View:顶层视图父类

    对于任意控件,都需要继承自View类,所以对于自定义View,需要继承于View类
    -----------------------------------------------------------------------
    1.构造函数
        四个参数的意义:
        Context context   上下文引用
           AttributeSet attrs    自定义属性集
            int defStyleAttr  默认样式
           int defStyleRes   默认资源引用
     public SubView(Context context) {
                super(context);
        }
    调用自身构造函数
     public SubView(Context context) {
            this(context, null);
        }

        //AttributeSet attrs    自定义属性集
        //自定义属性从XML文件中进行获取
        public SubView(Context context, @Nullable AttributeSet attrs) {
                this(context, attrs, 0);
        }

        public SubView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }

    2.无需创建自定义View对象,直接在xml文件中使用
        全包名.全类名    com.jiyun.demo01.SubView
    ------------------------------------------------------------------------
    如何绘制自定义View:
    前提:具备自定义属性
    1.创建自定义属性
        res/values/attrs.xml
    2.声明自定义属性
    <resources>
        <declare-styleable name="SubView">
        <attr name="myText" format="string"></attr>
        <attr name="myColor" format="color"></attr>
        <attr name="myTextSize" format="dimension"></attr>
    </declare-styleable> 
    </resources>
    通过attr标签,声明属性值,并且规定接受类型
    3.自定义属性取值
        ①从res/values/attrs.xml中去取属性
        ②需要对属性声明名称
        xmlns:day15="http://schemas.android.com/apk/res-auto" 
    --------------------------------------------------------------------------
    对自定义控件进行设置
    1.onLayout    Layout摆放一个View的位置
        ①onLayout是ViewGroup用来决定子View摆放位置的,各种布局的差异都在该方法中得到了体现。
        ②onLayout比layout多一个参数,changed,该参数是在setFrame通过比对上次的位置得出是否发生了变化,通常该参数没有被使用的意义,
        因为父View位置和大小不变,并不能代表子View的位置和大小没有发生改变。
    2.onMeasure    Measure测量一个View的大小
        widthMeasureSpec
        heightMeasureSpec
        选择EXACTLY测绘模式,表示的精确值
    3.onDraw(重点)Draw画出View的显示内容
            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万能程序者

你的鼓励是我不断学习前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值