Android中的自定义控件很常用,尤其时在哪些布局嵌套里面,使用嵌套将会有大量的代码,可读性差,通过自定义控件后即可提高可维护性和复用性让代码更简洁,明了
自定义View需要知道的:
1.自定义开关,需要的数据为图片的背景和前景
2.在oncreate方法中自定义提供设置背景和前景图片的方法以及相关的业务方法
3.整个绘制过程再onPause方法调用之后执行
4.在view中重写onMeasure方法在计算宽高,宽高即为背景图片的宽和高,通过重写setMeasuredDimension方法
5.在view中重写onDraw绘制内容,通过canvas.drawBitmap方法,先绘制背景,再绘制前景
添加监听的步骤(同创建回调的步骤)
1.定义一个接口
2.定义接口中为实现的业务逻辑方法
3.传递一个实现了此接口的类的对象
4.获取传递进来的对象,再合适的地方调用
自定义控件的属性的步骤如下:
1.再values下创建一个attrs.xml文件
2.在resources下声明declare-styleable节点,在里面添加自己想要的属性以及属性值的类型
1 | <?xml version="1.0" encoding="utf-8"?> |
3.在R文件的attr中会自动生成相应的代码
4.使用时,在使用自定义控件的xml文件中声明一个自己的名空间
xmlns:android=”http://schemas.android.com/apk/res/android"
xmlns:”自己随便写”=”http://schemas.android.com/apk/res/'包名' “
如:
xmlns:niyang=”http://schemas.android.com/apk/res/com.example.mytoggleview"
6.调用时格式为: niyang:switch_state=”false”
1 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
7.在自定义View的构造方法中调用
attrs.getAttributeResourceValue(namespace, attribute, defaultValue)方法获取属性值
参数1表示自定义的名空间,参数2表示想要获取属性value的属性key,参数3是默认值
8.将获取到的属性值调用set方法设置到相应的控件上
总代码如下
attrs.xml
1 | <?xml version="1.0" encoding="utf-8"?> |
activity_main.xml
1 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
ToggleView.java
1 | package com.example.mytoggleview.view; |
运行截图如下:

