实现监听事件常用的五种方式 | 您所在的位置:网站首页 › js键盘监听事件的代码有哪些类型 › 实现监听事件常用的五种方式 |
什么是监听事件?
监听事件就是等待某个事件的发生,当这个事件发生之后,对其做出一个响应。如:鼠标单击一个按钮,单击按钮时打开一个新的页面,或者双击桌面的应用图标,运行一个程序,这都是监听事件的应用。 监听三要素 Event Source(事件源):监听的目标,假如我们给Button设置一个点击事件,那么Button就为事件源Event(事件):发生的事件,不同的事件需要相应的事件监听器进行处理,点击、触摸、按下等都是事件Event Listener(事件监听器):不同的事件监听器处理不同的监听事件 实例:实例需求: 新建一个项目,在布局中添加一个按钮,给按钮设置监听事件,点击按钮,弹出一段提示文字(文字自定义) 需求分析: 1、添加按钮 2、设置监听事件实例中是给Button设置一个点击事件,所以通过.setOnClickListener( )方法来进行设置,在设置之前我们要先创建事件,实现监听事件方法有很多,主要有以下五种: 2.1通过内部类实现: 找到声明控件,再编写一个内部类OnClick实现View.OnClickListener接口,为了提高代码的复用性,在该类中添加一个switch判断语句,通过view.getId( )方法获取到控件的id,根据id执行相应控件的监听事件,在监听事件中使用Toast弹出提示信息,创建好事件后,需要新建一个事件对象,再通过.setOnClickListener( )方法给Button添加该事件,如下: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button mButton = findViewById(R.id.btn); OnClick onClick = new OnClick(); mButton.setOnClickListener(onClick); } class OnClick implements View.OnClickListener { @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn: Toast.makeText(MainActivity.this, "通过内部类实现", Toast.LENGTH_SHORT).show(); break; } } } }实例演示 2.2通过匿名内部类实现 匿名内部类实现监听事件时这几种方法中最简单,代码量最少的实现方式,该类方法也是通过.setOnClickListener( )方法设置,在该方法中直接创建一个系统提供的View.OnClickListener( )对象,在该对象中编写监听事件,代码如下: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button mButton = findViewById(R.id.btn); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "匿名内部类实现", Toast.LENGTH_SHORT).show(); } }); } }实例演示 2.3外部类实现 创建一个类,实现View.OnClickListener接口,在该类中定义一个Activity类型的实例mActivity(因为这是一个公共类,所以可能在不同的Activity中被调用,使用mActivity接收调用的Activity,在监听事件中的Toast语句中传入Activity),在构造方法中传入,再重写onClick( )方法,在该方法中添加switch提高方法的复用性,在监听事件中使用Toast语句弹出提示信息。代码如下: public class MyClick implements View.OnClickListener { private Activity mActivity; //创建一个构造方法,传入参数Activity public MyClick(Activity activity) { this.mActivity = activity; } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn: Toast.makeText(mActivity, "外部类实现", Toast.LENGTH_LONG).show(); break; } } } public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button mButton = findViewById(R.id.btn); mButton.setOnClickListener(new MyClick(MainActivity.this)); } }实例演示 2.4通过事件源所在类实现 这个实例中,我们是给Button设置点击事件,所以事件源就为Button,而Button所在类为MainActivity,所以通过事件源所在类实现,只需要给MainActivity实现View.OnClickListener接口,在MainActivity中重写View.OnClickListener的onClick( )方法,如下: public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button mButton = findViewById(R.id.btn); mButton.setOnClickListener(MainActivity.this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.btn: Toast.makeText(this, "事件所在类实现", Toast.LENGTH_SHORT).show(); break; } } }实例演示 2.5通过onClick属性实现 在Button控件中有一个"onClick"属性,是用于给Button控件设置监听事件,创建一个监听事件作为属性值传入,代码如下: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void show(View view){ switch (view.getId()){ case R.id.btn: Toast.makeText(this, "onClick属性实现", Toast.LENGTH_SHORT).show(); } } }实例演示 |
CopyRight 2018-2019 实验室设备网 版权所有 |