Android 自定义View实现开关效果

前言:Android自定义View对于刚入门乃至工作几年的程序员来说都是非常恐惧的,但也是Android进阶学习的必经之路,平时项目中经常会有一些苛刻的需求,我们可以在GitHub上找到各种各样的效果,能用则用,不能用自己花功夫改改也能草草了事。不过随着工作经验和工作性质,越来越觉得自定义View是时候有必要自己花点功夫研究一下。

一、经过这两天的努力,自己也尝试着写了一个Demo,效果很简单,就是开关按钮的实现。
可能有的人会说这效果so easy,找UI切三张图就完事了,何必大费周折自定义。你说的没错,不过这里只是用来学习自定义View来展示这么一个常见案例。

自定义View实现开关按钮

自定义控件

1.为什么自定义View?

  • Android自身带的控件不能满足需求, 需要根据自己的需求定义控件.

2.Android 的界面绘制流程?
这里写图片描述
onMeasure()——onLayout()——onDraw()方法都在Activity生命周期的onResume()方法之后执行。

3.Android自定义View的方式?

  • 集成View:View流程
    onMeasure() (在这个方法里指定自己的宽高) -> onDraw() (绘制自己的内容)
  • 集成ViewGroup:ViewGroup流程
    onMeasure() (指定自己的宽高, 所有子View的宽高)-> onLayout() (摆放所有子View) -> onDraw() (绘制内容)

自定义View实现开关按钮步骤:

  1. 写个类继承View,
  2. 拷贝包含包名的全路径到xml中,
  3. 界面中找到该控件, 设置初始信息,
  4. 根据需求绘制界面内容,
  5. 响应用户的触摸事件,
  6. 创建一个状态更新监听.

1.自定义ToggleView集成View,并且重新三个构造方法。

注意:构造方法为什么要重写三个?

  • ToggleView(Context context)一个参数的构造方法是用于代码创建控件时调用的
  • ToggleView(Context context, AttributeSet attrs)用于在xml里使用, 可指定自定义属性
  • ToggleView(Context context, AttributeSet attrs, int defStyle)用于在xml里使用, 可指定自定义属性, 如果指定了样式, 则走此构造函数

我们在XML中定义了背景图片、开关按钮图片和开关默认状态,要获取在XML文件定义的属性就在包含三个参数的构造方法里用TypedArray类来获取。

在attrs.xml声明节点declare-styleable

<declare-styleable name="ToggleView">
	<attr name="switch_background" format="reference" />
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值