Android开发系列之创建自定义控件
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开发系列之创建自定义控件相关推荐
- Android开发系列7——icon图标和开机启动页
前言 Android开发App过程中,需要一个独特吸引眼球的应用icon,以及标新的Launch页面用于简明的介绍.为了适配各种 手机的尺寸和手机屏幕分辩率,需要同一张图片制作多种尺寸用于兼容各种 ...
- android popupmenu 动态添加,Android开发使用PopupMenu创建弹出式菜单完整实例
本文实例讲述了Android开发使用PopupMenu创建弹出式菜单.分享给大家供大家参考,具体如下: 简介: PopupMenu 代表弹出式菜单,它会在指定组件上,默认情况下,PopupMenu会显 ...
- 最新网易微专业 Android开发系列
目录 ├─1.Android应用界面开发 │ ├─001 Android开发简介.flv │ ├─002 开始第一个应用.flv │ ├─003 Activity你必须知道的那些事(上).flv ...
- Android开发入门之创建第一个项目
0.Android开发必要的三个准备: 1.Java环境--因为Android开发基于Java. 2.Android Studio开发环境--提高编程效率. 3.虚拟机--进行真机模拟前的必要准备. ...
- Android开发系列(三)
这是更加android开发文档,写的我的第一个Android开发项目,就是在屏幕上显示一个简单的Hello World. 首先介绍几个概念: AVD,AVD的全称为:Andro ...
- 关于android开发环境的创建
最近想暑假找个实习单位,想想java android方面的应该比c.C++要好点,然后就想重操旧业学习android 大三的时候我学过一个学期的android知识.当时创建开发环境我很快就弄好了,但是 ...
- Android 第八课 创建自定义控件
常用控件和布局的继承结构,如下图: (待续....) 所有的控件都是直接或间接继承自View的,所用的所有布局都是直接或间接继承自ViewGroup的,View是Android中最基本的一种UI组件, ...
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)...
原地址:http://www.cnblogs.com/allenzheng/archive/2012/11/10/2762379.html 一.搭建Android开发环境 准备工作:下载Eclipse ...
- Android开发系列全套课程(视频教程50G)
本系列课程面向有java基础,想进入企业从事android开发的计算机专业者.学习搭配实战案例,高效掌握岗位知识. 原来地址失效 链接已更新(2021年5月1号更新): https://pan.bai ...
最新文章
- BT:胞外酶-化腐朽为神奇的催化剂
- Android用户界面开发(16):ImageSwitcher
- hbuilderx 小程序分包_基于uniapp的微信小程序之分包
- idea和搜狗输入法快捷键冲突_ubuntu18.04安装搜狗输入法
- 【设计模式 00】设计模式的六大原则
- tea 加密密钥生成_加密密钥生成需要的是熵的良好来源
- 查询数据库中数据的年份_本地公开数据中的年份
- 利用计算机诊断ct故障,计算机在CT室工作中的应用及管理
- poj_3628 动态规划
- 有效利用1 on 1
- 【线段树求逆序数】【HDU1394】Minimum Inversion Number
- hbm.xml支持的类型
- 【洛谷P5019+P1969+P3078】道路铺设(暴力模拟/差分)
- oracle用imp导入dmp文件
- 看完这篇文章,还不知道怎么学单片机,来打我!
- wifip2p重连 android,Android Wifi实现分析
- Unable to start debugging.报错
- ubuntu10.10下ESPON v350扫描仪的安装
- 面向对象编程原则(06)——依赖倒转原则
- Spark 安装与配置 (Spark HA 集群部署)
热门文章
- ibatis的isequal_isequal ibatis
- 细胞计算机生命游戏,【图片】【20170108 其它內容】【转】生命游戏【三体吧】_百度贴吧...
- java integer引用传递_在java中String,对象,Integer(包装类型的)关于引用传递还是值传递...
- datetimepicker弹出窗在iframe中部分遮挡_美军下一代班组武器项目,NGSW中的小秘密,你了解多少?...
- android decorview动画,Android窗口机制(二)Window,PhoneWindow,DecorView,setContentView源码理解...
- 检测1的个数_冲床电永磁夹紧系统(PMCS),实现1分钟的快速换模~
- linux搜索指定文件夹里文件是否存在,Linux文件操作之文件查询与搜索命令详解...
- 新电脑怎么分盘_2020双十一预算一万该怎么组装电脑(含显示器)新媒体,视频剪辑等影视专业装机指南...
- python 批量下载图片_Python 批量下载图片示例
- 这些元器件基础知识都不懂,怎么混电子圈!