自定义View

xiaoxiao2021-02-28  14

一, 为什么要使用自定义View? 1, 当系统提供View 不能满足开发需要时, 则需要自定义View 2, 特定显示的风格 3, 处理一些特殊的用户交互 4, 优化布局 5, 代码的封装 二, 自定义View 的分类 1, 完全自定义View , 继承View , 重写相关的方法, 绘制控件 2, 继承已有的控件, 继承EditText, TextView, 在已有的控件上拓展新的功能 3, 组合定义的自定View, 继承ViewGroup或其子类对象, 目的是把多个小的组件组合成一个大的View 三, 使用的步骤 1, 定义一个类, 继承View ,重写构造方法 一个参数: /** * 在代码中, 定义View 时需要的方法 * * TextView tv = new TextView(this); * * 必须要定义的构造方法, 目的是在java 代码中可以创建自定义View 的对象 * * @param context 上下文对象 */ public CustomView01(Context context) { super(context); } 两个参数: /** * 在布局页面中添加自定义View 的方法 * * @param context 上下文对象 * @param attrs 自定义属性的集合 * * 注意: 如果自定义的View 需要显示在布局页面中, 则必须重写该构造方法 */ public CustomView01(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } 三个参数 /** * 在布局页面中使用 * @param context 上下文对象 * @param attrs 属性的集合 * @param defStyleAttr 默认自定义的样式风格 */ public CustomView01(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } 2, 重写父类的方法: 绘制的方法, 测量的方法 绘制的方法 onDraw(Canvas canvas) 绘制自定义View 中显示的内容 Canvas 画布 (文字, 线, 圆, 位置....) Paint 画笔 (更改画笔的颜色, 更改绘制文字的大小...) 测量的方法 onMeasure() MeasureSpac 反映View的宽度和高度的尺寸, 和传入的模式 AT_MOST 不固定的值, 根据内容来展示, 定义为wrap_content会得到这种模式 EXACTLY 精确的值, 当View的宽度或者高度被定义为精确的值或者match_parent都会得到这种模式 UNSPECIFIED 没有限制的, 不固定的, 通常用于复杂型控件, 如ListView , GridView,Spinner 四, 自定义属性 1, 步骤 1, 在res/values 中创建attrs.xml 的文件 2, 写入标签: <declare-styleable name="CustomView"> 在该标签内部, 指定<attr 属性名称, format ="属性中属性值的类型"></attr> 2, format 属性值 reference 参考的id 引用类型 @..... dimension 尺寸(包含单位 sp或者dp) string 字符串 color 颜色 integer 整型 float 浮点型 enum 枚举 boolean 布尔 flag 位或者运算 fraction 百分比 实例: 实例一 : 自定义View 的简单介绍 构造方法 + 绘制方法 + 测量方法 实例二 : 自定义属性的使用 TypedArray : 把xml的属性内容转换为java 内容 实例三 : 自定义View的监听
转载请注明原文地址: https://www.6miu.com/read-2150205.html

最新回复(0)