【笨鸟先飞】android重新学习日记3---识别用户行为

识别用户行为以及手机自身行为,官方称呼“事件处理”。

 

我从识别用户行为说起,我们希望在某个地方识别用户的某个行为,我们通常会采用监听器,listener

 

用户的行为有些什么呢?(以下为自己取名字和分类,如需知晓专业名词,看相关书籍)

屏幕类:点击,滑动,长按,多指操作等。

硬件类:按电源键,返回键,home键等。

传感器类:摇动,翻转,横竖屏切换等。

 

对于用户三大类行为,屏幕类是使用最多的一种情况,以及listener对用户行为的识别,也是针对屏幕类。

 

举个例子,点击按钮,希望实现内容1,代码如下:

OnClickListener a = new OnClickListener() {
    @Override
    public void onClick(View view) {
        内容1
    }
}

 

button.setOnClickListener(a);

 

从代码看,button.setOnClickListener(a) 首先是一个button按钮,这个按钮就是一个组件。 这里我在button上绑定了一个点击的监听器。

我们来看看这个单词的含义,

Set是指设定,绑定。 

On是回调方法的开头,其含义是,被某个情况所触发,而不是被某个方法直接调用

Click是指点击操作

Listener是指监听器。

 

这加起来就是这个方法的含义,绑定一个由点击操作触发的监听器。监听器就是一旦发生就会引起,这里也可以理解成,监听器一直监听着点击这个操作,一旦用户对button进行了点击就会起反应。

 

更多时候,我建议采用下面这个手法来绑定,其实质都是一样的。

button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        内容1
    }
});

 

这个绑定监听器的手法,不再创建a这个对象,而是直接在setOnClickListener这个方法内部创建对象了。

 

那么这个对象是一个类,OnClickListener,在使用时,我们需要重写其onClick方法,你也可以不重写,不重写的话,点击就没有效果。重写的话,就在点击的时候,运行内容1

 

new OnClickListener() {
    @Override
    public void onClick(View view) {
        内容1
    }
}

这个@Override是指下面这个方法是重写的方法,我们重写的是onClick方法。

 

其实监听器大部分是跟着组件走的,很多组件都有默认的监听器。这部分,也是关于我之前说的“组件本身内容相关”的设置部分,使用与用户有交互的组件时,都要用心写好这部分代码。

 

 

下面讲解,自定义监听器。自定义监听器,是接口类。

 

为什么时候需要用到自定义监听器呢,最简单的情况是,某个行为,被其他多个行为所监听,其他多个行为在当前写代码时,不能完全确定下来,究竟有多少个其他行为。

 

用模拟驾驶程序来举例说明。假设在车子开始启动的时候,需要在周围加载道路两旁的物品,这里可以自定义一个监听器,监听车子启动的行为,当车子启动,周围的物品就开始加载。

 

这里,我们不知道有哪些物品要加载,就使用监听器来完成。车子启动的时候,调用监听器,所有在监听的物品就会一一加载。

 

上面这个例子用来理解监听器的用途,但是实际实现的时候,有一种叫做观察者的设计模式,是更加详细的高级实现方案,有兴趣者可以学习一下,我后期也会学习设计模式的。

 

 

 

关于回调。

 

识别用户行为,除了监听器,还有就是回调了。其实回调就是监听器,监听器就是回调。区别是监听器是帮得到其他地方,回调就在类里面。但是他们的本质都是一样的。

 

比如,我创建一个Button类,然后将这个类创建对象,放到桌面上。在创建这个类里面,可以直接重写onclick方法,这里onclick方法被调用就属于回调。

 

最常见的回调:

 

Oncreat是使用最多的回调,每个activity即每个app都会用到。

 

这里我们会发现回调和监听器的方法共同特征是,on开头的,on表示会在某个情况下主动被调用,这种方法,也告诉我们,不要在其他手写的方法里面调用。

 

除非特殊情况,不要在其他自己写的方法里面调用on开头的方法,因为on开头的方法,有着自己的触发条件,自己写的方法里面调用属于扩展了调用的范围,对于代码的健壮性是很大的伤害。

 

正常情况下,android自带的on开头的方法已经足够,在使用某个组件的时候,去看看它蕴含的on方法,足以应对中小型的编程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值