美文网首页
自定义View(1)

自定义View(1)

作者: 摸着铁索过桥 | 来源:发表于2020-02-29 15:12 被阅读0次

    自定义View之构造函数

    public DemoView(Context context) {

    this(context,null);

    System.out.println("=========一个参数============");

    }

    public DemoView(Context context, @Nullable AttributeSet attrs) {

    this(context, attrs,R.style.);

    System.out.println("=========两个参数============");

    }

    public DemoView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

    super(context, attrs, defStyleAttr);

    System.out.println("=========三个参数============");

    }

    public DemoView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {

    super(context, attrs, defStyleAttr, defStyleRes);

    System.out.println("=========四个参数============");

    }

    调用说明:

    (1)利用代码直接new 布局时会调用一个参数的构造函数。

    (2)如果直接写在xml文件中会调用二个参数的构造函数被调用。

    (3)上面的写法永远不会调用第三个,第四个构造函数,三个,四个参数的构造函数通常由我们自己主动调用。

    构造函数参数说明:

    Context - 上下文;

    AttributeSet - xml文件中的属性;

    int defStyleAttr - Theme中的默认样式;

    int defStyleResource - defStyleAttr未使用(为0,或者未匹配到),则应用于View的默认样式;

    R.style中系统为view定义了很多默认主题Theme,主题中有对某些属性的默认赋值。

    说明:

    一个参数的构造函数:View或者ViewGroup可以利用代码直接new对象,这时就会调用一个参数的构造函数,生成对象之后利用内部提供的属性设置方法就行属性设置。

    两个参数的构造函数:用于加载xml布局文件时调用,通常自定义控件的自定义属性的读取需要用到这个构造函数(系统的View,ViewGroup只要写在xml中也会调用这个构造函数)。

    三个参数的构造函数:一般系统不会主动调用,需要手动调用,可以手动传入defStyleAttr并调用,即时在view中定义了them,style,也不会调用三参构造函数。

    四个参数的构造函数,如果第三个参数为0或者没有定义defStyleAttr时,第四个参数才起作用,它是style的引用,高版本才支持,所以一般不会用到。

    相关文章

      网友评论

          本文标题:自定义View(1)

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