android:performClick的用法——自定义View增加点击事件更配performClick噢!

本文解析了如何利用Android的performClick方法配合自定义View实现点击事件模拟,包括官方注释理解、源码剖析,并提供实例演示。重点讲解了在自定义View中如何优雅地集成默认点击行为与外部监听器交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浅析

performClick 官方注释

Call this view’s OnClickListener, if it is defined. Performs all normal actions associated with clicking: reporting accessibility event, playing a sound, etc.
调用此视图的 OnClickListener(如果已定义)。 执行与点击相关的所有正常操作:报告无障碍事件、播放声音等。

很明显的意思,通过performClick调用了OnClickListener

看一下performClick的源码实现:

public boolean performClick() {
        // We still need to call this method to handle the cases where performClick() was called
        // externally, instead of through performClickInternal()
        notifyAutofillManagerOnClick();

        final boolean result;
        final ListenerInfo li = mListenerInfo;
        if (li != null && li.mOnClickListener != null) {
            playSoundEffect(SoundEffectConstants.CLICK);
            li.mOnClickListener.onClick(this);
            result = true;
        } else {
            result = false;
        }

        sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);

        notifyEnterOrExitForAutoFillIfNeeded(true);

        return result;
    }

关注一个很重要的点,首先判断mOnClickListener是否为null。如果不为null,则调用li.mOnClickListener.onClick(this),即会调用到外部写的点击事件。

如何使用

模拟点击事件

这个用法网上大部分都有了,这里也做一下简单的描述:
通过上面的源码分析,大家可以看到通过performClick可以调用到点击事件,又因为performClick方法的访问修饰权限是公开的。所以外部可以直接调用performClick用于模拟点击事件。
举个🌰

val tv = findViewById<TextView>(R.id.tv_main)
tv.setOnClickListener { 
    Toast.makeText(this,"mock click",Toast.LENGTH_SHORT).show()
}
tv.performClick()

这样执行程序,就会提示mock click

配合自定义View

performClick还有一个重要的使用方式,当自定义View的时候,如果需要有一个默认的点击事件时,你应该如何处理呢?
可以使用performClick来进行优雅的实现这一需求。
如下所示,举个🌰:

override fun performClick(): Boolean {
   if (super.performClick()) return true

	//TODO 	

   return true
}

这么写的话,如果外部设置了OnClickListener则使用外部的点击事件,performClickl里面的默认操作就无效了。非常适合自定义View的时候使用,灵活度非常高!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pumpkin的玄学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值