Android 自定义教程

Android自定义

一、自定义如何分类?

1、自定义View
在没有现成的View,需要自己实现的时候,就使用自定义View,一般继承自View,SurfaceView或其他的View。

2、自定义ViewGroup
自定义ViewGroup一般是利用现有的组件根据特定的布局方式来组成新的组件,大多继承自ViewGroup或各种Layout。

注意:自定义View属于控件,自定义ViewGroup属于组件

二、自定义View流程图

请添加图片描述
1、onDraw() 方法为您提供了一个 Canvas,您可以在其上实现所需的任何东西:2D 图形、其他标准或自定义组件、样式文本或您可以想到的其他任何东西。

2、onMeasure() 是组件与其容器之间的渲染约定的关键部分。应该替换 onMeasure(),以高效且准确地报告其所含部分的测量结果。由于父级的限制要求(传入 onMeasure() 方法),以及一旦计算出宽度和高度就要使用测量的宽度和高度调用 setMeasuredDimension() 方法的要求,这变得稍微有些复杂。如果未通过已替换的 onMeasure() 方法调用此方法,则结果会在测量时出现异常。

简要来说,实现 onMeasure() 的方式如下所示:

  • 调用已替换的 onMeasure() 方法时,应指定宽度和高度测量规范(widthMeasureSpec 和 heightMeasureSpec 参数都是表示尺寸的整数代码),应将这些规范视为应该生成的宽度和高度的限制要求。如需对这些规范可能要求的限制的完整参考,请参阅 View.onMeasure(int, int) 下的参考文档(此参考文档也清楚地说明了整个测量操作)。
  • 组件的 onMeasure() 方法应计算渲染组件所需的测量宽度和高度。此方法应尽量符合传入的规范,尽管可以选择超出这些规范(在这种情况下,父级可以根据不同的测量规范选择执行哪些操作,例如裁剪、滚动、抛出异常或要求 onMeasure() 重试)。
  • 计算宽度和高度后,必须使用计算得出的测量值调用 setMeasuredDimension(int width, int height) 方法。如果不执行此操作,则会导致系统抛出异常。

三、流式布局

FlowLayout,流式布局,这个概念在移动端或者前端开发中很常见,特别是在多标签的展示中,往往起到关键作用。然而Android官方,并没有为开发者提供这样一个布局,图例:
请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Android Hai

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值