自定义View笔记(一)

2019-02-24  本文已影响0人  六花垂冰丸

自定义View构造方法

例子:自定义TextView

//TextView tv = new TextView(this);
public TextView(Context context){
    super(context);
}
public TextView(Context context,AttributeSet attrs){
    super(context,attrs);
}
public TextView(Context context,AttributeSet attrs,int defStyleAttr{
    super(context,attrs,defStyleAttr);
}

onMeasure()

自定义View的测量方法 布局的宽高由这个方法指定

获取宽高的模式

int widthMode = MeasureSpec.getMode(widthMeasure)
int heightMode =MeasureSpec.getMode(heightMeasure)

onDraw() 用于绘制

onTouchEvent() 用于事件处理 要return true才有完整的事件分发流程(责任链模式)

自定义属性

  1. 自定义属性是用来配置的,在attrs.xml中去配置相应的属性
//格式:string 文字 color 颜色 dimension 宽高
//字体大小 integer refercence 资源(drawable)

<attr name="text" format="string"/>
<attr name="background" format="reference|color"/>
//枚举
<attr name="inputType">
    <enum name="number" value="1"/>
    <enum name="text" value="2"/>
<attr/>
  1. 在布局中使用 记得声明命名空间
  2. 在代码中获取自定义属性
//xxx为在style里面定义的自定义属性
TypedArray array = context.obtainStyledAttributes(attrs,R.styleable.xxx);
int Color = array.getColor(R.styleable.xxx,Color);
int mTextSize = array.getDimensionPixelSize(R.styleable.xxxx_textSize,mTextSize)
//记得回收♻️
array.recycle();
上一篇下一篇

猜你喜欢

热点阅读