Android视图performClick和callOnclick的区别

Posted YongHui_Luo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android视图performClick和callOnclick的区别相关的知识,希望对你有一定的参考价值。

作用 : View类的performClickcallOnclick函数都可以实现,不用用户手动点击,直接触发View的点击事件。

区别有如下两点:

1) API等级

performClick是在API 1中加入
callOnClick是在API 15 中加入

2)代码实现层面

看两个方面的代码实现,如下:

 /**
     * Directly call any attached OnClickListener.  Unlike @link #performClick(),
     * this only calls the listener, and does not do any associated clicking
     * actions like reporting an accessibility event.
     *
     * @return True there was an assigned OnClickListener that was called, false
     *         otherwise is returned.
     */
    public boolean callOnClick() 
        ListenerInfo li = mListenerInfo;
        if (li != null && li.mOnClickListener != null) 
            li.mOnClickListener.onClick(this);
            return true;
        
        return false;
    
 /**
     * Call this view's OnClickListener, if it is defined.  Performs all normal
     * actions associated with clicking: reporting accessibility event, playing
     * a sound, etc.
     *
     * @return True there was an assigned OnClickListener that was called, false
     *         otherwise is returned.
     */
    public boolean performClick() 
        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);
        return result;
    

  从代码中可以看出,callOnClickperformClick的简化版,不包含点击播放声音,不具有辅助功能,那么什么是辅助功能,给出官方介绍如下:

  许多android用户有不同的能力(限制),这要求他们以不同的方式使用他们的Android设备。这些限制包括视力,肢体或与年龄有关,这些限制阻碍了他们看到或充分使用触摸屏,而用户的听力丧失,让他们可能无法感知声音信息和警报。
  Android提供了辅助功能的特性和服务帮助这些用户更容易的使用他们的设备,这些功能包括语音合成、触觉反馈、手势导航、轨迹球和方向键导航。Android应用程序开发人员可以利用这些服务,使他们的应用程序更贴近用户。

以上是关于Android视图performClick和callOnclick的区别的主要内容,如果未能解决你的问题,请参考以下文章

Android : 模拟点击performClick()/模拟长按performLongClick()/模拟onTouch事件

Android : 模拟点击performClick()/模拟长按performLongClick()/模拟onTouch事件

android 点击,触摸事件

如何以编程方式检查带有涟漪动画的Android单选按钮?

scss 带Bootstrap模式的每月Cal V2列表视图

scss 带Bootstrap模式的每月Cal V2列表视图