view.performClick()触发点击事件

简介: 1、主要作用      自动触发控件的点击事件 2、界面的布局文件  activity_main.xml 3、MainActivity 代码     package com.
1、主要作用

     自动触发控件的点击事件

2、界面的布局文件  activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/bt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击一下" />

    <Button
        android:id="@+id/bt2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/bt"
        android:text="@string/hello_world" />

</RelativeLayout>


3、MainActivity 代码

   

package com.android;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    Button button1 ;
    Button button2 ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main );

        button1 = (Button) findViewById( R.id.bt ) ; 
        button1.setOnClickListener( new OnClickListener() {
            @Override
            public void onClick(View v) {
                button2.performClick();  //调用 button2的点击事件
            }
        });

        button2 = (Button) findViewById( R.id.bt2 ) ;
        button2.setOnClickListener( new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText( MainActivity.this , "点击了", Toast.LENGTH_SHORT).show();
            }
        });
    }
}


4、注意事项

   如果同时使用了view.setOnTouchListener()方法,则有可能存在拦截view.performClick()的响应事件,

 因为当view.OnTouchEvent()在event.getAction() == MotionEvent.ACTION_DOWN时返回false,

 系统会认为view不需要处理Touch事件,则后续的Touch事件(move、up、click)就不会被传进来 。

 所以也不会触发view.performClick(),而view.setOnTouchListener()相当于是重写了view.OnTouchEvent(),

 所以在写view的TouchListener处理时,需要留意view是否存在点击事件监听,如果有,则在适当的位置使用view.performClick()触发点击事件

 

相关文章
|
Windows
Electron窗口白屏解决
Electron白屏问题主要出现在两方面: 1、electron未加载完毕html,electron自身产生的白色背景; 2、electron加载html,html处于加载渲染过程中产生的短暂白屏;
2697 0
|
Android开发 数据安全/隐私保护 容器
Android10.0 SystemUI—锁屏加载分析
Android10.0 SystemUI—锁屏加载分析
1695 0
Android10.0 SystemUI—锁屏加载分析
|
Android开发 数据安全/隐私保护
Android TextView 使用以及属性(方法)大全(下)
TextViewXML属性和相关方法说明(2)
1374 0
|
XML Android开发 数据格式
简单使用BottomSheetBehavior实现底部弹窗
这次带来的是BottomSheetBehavior的简单使用,BottomSheetBehavior是Android Support Library23.2中引入的,它可以轻松实现底部动作条功能。
4981 0
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
自注意力机制在Transformer中备受瞩目,看似‘主角’,为何FFN却在背后默默扮演关键角色?
本文三桥君深入解析Transformer模型中的前馈全连接层(FFN)机制,揭示其通过两层线性变换和ReLU激活增强模型表达能力的关键作用。文章从输入准备、结构原理到计算过程进行详细阐述,并提供PyTorch实现代码。同时探讨了FFN的优化方向及与自注意力机制的协同效应,为AI从业者提供实践建议。AI专家三桥君结合图文并茂的讲解方式,帮助读者掌握这一影响Transformer性能的核心组件。
226 0
|
10月前
|
存储 缓存 负载均衡
如何设计一个注册中心?以Zookeeper为例
本文介绍了分布式系统中注册中心的设计与工作原理,重点讲解了Zookeeper作为注册中心的实现。注册中心需具备服务注册、注销、心跳检测、服务查询等功能,确保高可用性。Zookeeper通过层次命名空间和znode存储数据,支持服务注册与发现,并采用发布-订阅模式通知消费者服务变更。然而,Zookeeper存在选举期间不可用的问题,不太适合作为注册中心,因其CP模型优先保证一致性而非可用性。
533 78
|
存储 安全 API
Android经典实战之存储方案对比:SharedPreferences vs MMKV vs DataStore
本文介绍了 Android 开发中常用的键值对存储方案,包括 SharedPreferences、MMKV 和 DataStore,并对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例,帮助开发者根据项目需求选择最适合的存储方案,提升应用性能和用户体验。
852 1
|
测试技术 开发工具 git
掌握 Git 分支策略:提升你的版本控制技能
在现代软件开发中,版本控制至关重要,Git 作为最流行的分布式版本控制系统,其分支管理策略对于高效协作和代码维护尤为重要。本文介绍了几种常用的 Git 分支策略,包括主线开发模型、功能分支模型、Gitflow 工作流和 Forking 工作流,并探讨了如何根据项目需求选择合适的分支模型。通过保持 `master` 分支稳定、及时合并清理分支、使用命名规范、利用 Pull Request 进行代码审查及自动化测试等最佳实践,可以显著提升团队协作效率和软件质量。掌握这些策略将帮助开发者更好地管理代码库,加快开发流程。
|
自然语言处理 数据安全/隐私保护 iOS开发
ChatGPT使用学习(三):ChatGPT桌面版使用
本文介绍了ChatGPT桌面版,一个由OpenAI推出的独立桌面应用程序,支持离线使用、数据隐私保护和快速响应。用户界面友好,支持多语言交互。桌面版无需网络连接,保护用户数据隐私,并提供快速响应。用户可通过Github链接下载安装,使用谷歌账号登录。此外,OpenAI官方也发布了适用于macOS的桌面端应用,并向所有用户免费开放。
418 1
|
存储 SQL NoSQL
关系型数据库的扩展性问题
关系型数据库的扩展性问题
434 2