Android开发过程中我们经常需要定义自己的控件,一方面基于复用的角度考虑,一方面也是基于逻辑处理思维的角度考虑。在这篇博客里面,笔者想要介绍、总结几种Android自定义控件的方法,如果有什么不对的地方欢迎拍砖。

对现有控件进行扩展,采用这种方法通常来说我们需要定制化较小,比如我们仅需要某个按钮固定是某种颜色,我们仅需要某个TextView显示某种动画等。这种方法我们需要重写如下几个方法:onMeasure(),onLayout,onDraw(),onTouchEvent()。onMeasure()方法用于整个页面的测绘,onLayout()方法用于整个页面的布局,onDraw()用于整个页面的绘制,onTouchEvent()用于整个控件的触控事件的监测。

创建组合控件,这种方法我们通常需要定制某个组件,通过组合多个控件,然后暴露响应的属性和回调方法实现自己需要的业务需求。1.将需要定制的控件属性定义到xml里面;2.读取xml里面的属性,将其赋值到创建出来的控件对应属性上面;3.将创建的控件add到一个ViewGroup上面;4.定义回调接口,在控件触发事件的时候,执行响应的回调方法就可以了;

重写View实现新的控件,这种方法我们通常用来创建一些比较古怪的图形控件,比如饼形图、柱形图等。大体的做法是:1.定义一个paint画笔;2.定义一个你需要绘制的图形对象,比如矩形、圆形;3.如果需要组合其他的图形,可以接着绘制;

自定义ViewGroup,这种方式其实跟组合控件差不多,同样需要重写上面几个方法来实现你自己的业务需求。

好了,这篇博客就到这里,虽然短小但是涵盖的内容挺多的,see you!

转载于:https://www.cnblogs.com/xiaocai20091687/p/xiaocai_android_new_5.html

Android开发系列之创建自定义控件相关推荐

  1. Android开发系列7——icon图标和开机启动页

    前言   Android开发App过程中,需要一个独特吸引眼球的应用icon,以及标新的Launch页面用于简明的介绍.为了适配各种 手机的尺寸和手机屏幕分辩率,需要同一张图片制作多种尺寸用于兼容各种 ...

  2. android popupmenu 动态添加,Android开发使用PopupMenu创建弹出式菜单完整实例

    本文实例讲述了Android开发使用PopupMenu创建弹出式菜单.分享给大家供大家参考,具体如下: 简介: PopupMenu 代表弹出式菜单,它会在指定组件上,默认情况下,PopupMenu会显 ...

  3. 最新网易微专业 Android开发系列

    目录 ├─1.Android应用界面开发 │  ├─001 Android开发简介.flv │  ├─002 开始第一个应用.flv │  ├─003 Activity你必须知道的那些事(上).flv ...

  4. Android开发入门之创建第一个项目

    0.Android开发必要的三个准备: 1.Java环境--因为Android开发基于Java. 2.Android Studio开发环境--提高编程效率. 3.虚拟机--进行真机模拟前的必要准备. ...

  5. Android开发系列(三)

    这是更加android开发文档,写的我的第一个Android开发项目,就是在屏幕上显示一个简单的Hello World.       首先介绍几个概念:       AVD,AVD的全称为:Andro ...

  6. 关于android开发环境的创建

    最近想暑假找个实习单位,想想java android方面的应该比c.C++要好点,然后就想重操旧业学习android 大三的时候我学过一个学期的android知识.当时创建开发环境我很快就弄好了,但是 ...

  7. Android 第八课 创建自定义控件

    常用控件和布局的继承结构,如下图: (待续....) 所有的控件都是直接或间接继承自View的,所用的所有布局都是直接或间接继承自ViewGroup的,View是Android中最基本的一种UI组件, ...

  8. Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)...

    原地址:http://www.cnblogs.com/allenzheng/archive/2012/11/10/2762379.html 一.搭建Android开发环境 准备工作:下载Eclipse ...

  9. Android开发系列全套课程(视频教程50G)

    本系列课程面向有java基础,想进入企业从事android开发的计算机专业者.学习搭配实战案例,高效掌握岗位知识. 原来地址失效 链接已更新(2021年5月1号更新): https://pan.bai ...

最新文章

  1. BT:胞外酶-化腐朽为神奇的催化剂
  2. Android用户界面开发(16):ImageSwitcher
  3. hbuilderx 小程序分包_基于uniapp的微信小程序之分包
  4. idea和搜狗输入法快捷键冲突_ubuntu18.04安装搜狗输入法
  5. 【设计模式 00】设计模式的六大原则
  6. tea 加密密钥生成_加密密钥生成需要的是熵的良好来源
  7. 查询数据库中数据的年份_本地公开数据中的年份
  8. 利用计算机诊断ct故障,计算机在CT室工作中的应用及管理
  9. poj_3628 动态规划
  10. 有效利用1 on 1
  11. 【线段树求逆序数】【HDU1394】Minimum Inversion Number
  12. hbm.xml支持的类型
  13. 【洛谷P5019+P1969+P3078】道路铺设(暴力模拟/差分)
  14. oracle用imp导入dmp文件
  15. 看完这篇文章,还不知道怎么学单片机,来打我!
  16. wifip2p重连 android,Android Wifi实现分析
  17. Unable to start debugging.报错
  18. ubuntu10.10下ESPON v350扫描仪的安装
  19. 面向对象编程原则(06)——依赖倒转原则
  20. Spark 安装与配置 (Spark HA 集群部署)

热门文章

  1. ibatis的isequal_isequal ibatis
  2. 细胞计算机生命游戏,【图片】【20170108 其它內容】【转】生命游戏【三体吧】_百度贴吧...
  3. java integer引用传递_在java中String,对象,Integer(包装类型的)关于引用传递还是值传递...
  4. datetimepicker弹出窗在iframe中部分遮挡_美军下一代班组武器项目,NGSW中的小秘密,你了解多少?...
  5. android decorview动画,Android窗口机制(二)Window,PhoneWindow,DecorView,setContentView源码理解...
  6. 检测1的个数_冲床电永磁夹紧系统(PMCS),实现1分钟的快速换模~
  7. linux搜索指定文件夹里文件是否存在,Linux文件操作之文件查询与搜索命令详解...
  8. 新电脑怎么分盘_2020双十一预算一万该怎么组装电脑(含显示器)新媒体,视频剪辑等影视专业装机指南...
  9. python 批量下载图片_Python 批量下载图片示例
  10. 这些元器件基础知识都不懂,怎么混电子圈!