一.Android中点击事件有四种实现方法,基础嘛!毕竟一切的积累都是基础,没有基础就不会有所谓的大神存在。踏踏实实去夯实基础才是现如今最迫切需要的,自己现阶段的想法是把一些基础的知识点都写上博客上为的是巩固也是为了以后好查阅!
Android的四种的点击事件的实现有四种,可根据自身的情况去选择哪一种实现:
1.直接设置view的点击事件,就是view.setOnClickListener();
2.创建一个类实现View.OnClickListener。如:view.setOnClickListener(new MyClickListener());
3.类直接实现View.OnClickListener(),根据设置要点击view的id在重写的onClick(View v)方法中设置点击事件。
4.在XML中的属性设置中用android:onClick="click"方法,在java中创建此方法。
代码:
package com.example.foreveross.clickdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mBtn1;
private Button mBtn2;
private Button mBtn3;
private Button mBtn4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initEvent();
}
private void initEvent() {
//第一种直接设置点击事件
mBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"第一种实现",Toast.LENGTH_SHORT).show();
}
});
//第二种自己创建一个类实现 View.OnClickListener
mBtn2.setOnClickListener(new MyOnclickListener());
//第三种类直接实现View.OnClickListener
mBtn3.setOnClickListener(this);
}
/**
* 第四种实现,是根据在XML文件设置onclick的方法
* @param view
*/
public void click(View view){
Toast.makeText(MainActivity.this,"第四种实现",Toast.LENGTH_SHORT).show();
}
private void initView() {
mBtn1 = (Button) findViewById(R.id.btn1);
mBtn2 = (Button) findViewById(R.id.btn2);
mBtn3 = (Button) findViewById(R.id.btn3);
mBtn4 = (Button) findViewById(R.id.btn4);
}
/**
* 这种实现可以根据xml设置的id匹配对应的view,当点击实现多的时候建议使用这种方法,逻辑性强
* 代码清晰
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn3:
Toast.makeText(MainActivity.this,"第三种实现",Toast.LENGTH_SHORT).show();
}
}
private class MyOnclickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"第二种实现",Toast.LENGTH_SHORT).show();
}
}
}
二.在view中的onClickListener的方法中实现了接口回调的方法。
1.创建OnClickListener的接口,接口里onClick的抽象方法:
/**
* Interface definition for a callback to be invoked when a view is clicked.
*/
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
void onClick(View v);
}
2.创建接口mOnClickListener对象:
/**
* Listener used to dispatch click events.
* This field should be made private, so it is hidden from the SDK.
* {@hide}
*/
public OnClickListener mOnClickListener;
3.View中创建setOnClickLisener方法传入接口对象:
/**
* Register a callback to be invoked when this view is clicked. If this view is not
* clickable, it becomes clickable.
*
* @param l The callback that will run
*
* @see #setClickable(boolean)
*/
public void setOnClickListener(@Nullable OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}
4.这整个流程就是接口回调的基本实现,当使用view的setOnClickListener方法时候就会同时调用OnClickListener接口中的onClick(View v)抽象方法实例化的方法。