1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android:performClick的用法——自定义View增加点击事件更配performClick噢!

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

时间:2020-05-14 10:59:31

相关推荐

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

文章目录

浅析如何使用模拟点击事件配合自定义View

浅析

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的时候使用,灵活度非常高!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。