android_三种监听事件de用法

layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_on_click"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.iamchan.allfunction.ui.widget.OnClickActivity">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/text"
            android:padding="10dp"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <Button
            android:text="btn1"
            android:id="@+id/btn1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <Button
            android:text="btn2"
            android:id="@+id/btn2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <Button
            android:text="btn3"
            android:id="@+id/btn3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <Button
            android:text="btn4"
            android:id="@+id/btn4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
</RelativeLayout>

java:

public class OnClickActivity extends SwipeBackActivity implements View.OnClickListener {

    @BindView(R.id.btn1)
    Button btn1;
    @BindView(R.id.btn2)
    Button btn2;
    @BindView(R.id.text)
    TextView text;
    @BindView(R.id.btn3)
    Button btn3;
    @BindView(R.id.btn4)
    Button btn4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_on_click);
        ButterKnife.bind(this);


        /*
        * 监听事件
        *
        * 生活中按了一下电灯开关  开关内部执行了某些操作  比如让灯灭(灯亮)     灯灭(灯亮)了就属于给了你一个响应   然后你就睡觉或者睡醒了
        *
        *
        * */


        /*
        * 这是匿名内部类方式实现监听(放在方法的内部)
        * button是继承于view对象的
        *view对象中有一个方法叫做setOnClickListener()方法 参数需要传一个OnClickListener接口
        *接口中有一个方法叫做 onClick
        * 接口没有方法体
        *
        * */
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                text.setText("这是匿名内部类方式");
            }
        });


        /*
        *
        * 通过外部类实现
        * */
        btn2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                super.onClick(v);
                Toast.makeText(OnClickActivity.this/*内部类访问不了本类对象*/, "这个外部类实现", Toast.LENGTH_SHORT).show();
            }
        });
        btn3.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                super.onClick(v);
                Toast.makeText(OnClickActivity.this/*内部类访问不了本类对象*/, "这个外部类实现2", Toast.LENGTH_SHORT).show();
            }
        });

        /*
        * 通过接口方式
        * 需要让这个activity实现 view中的OnClickListener接口
        *
        * */
        btn4.setOnClickListener(this);

    }
    /*
    * 接口方式实现
    * */
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn4:
                text.setText("这是接口方式实现");
                break;
        }
    }
}

/*
* 外部类方式实现 用的比较少  继承个接口 view对象中的OnClickListener接口
*
* 这种方法一般用在一个页面中的很多按钮点击实现一个功能 比如一个动画效果
*
* */
class OnClickListener implements View.OnClickListener {

    @Override
    public void onClick(View v) {
        v.setAlpha(0.7f);
    }
}
/*
* 对比
* 匿名内部类方式 少量按钮实现监听
* 外部类 多个按钮实现相同工能
* 接口方式 很多个按钮的时候(不要都给每个按钮用匿名内部类方式)
*
* */

猜你喜欢

转载自blog.csdn.net/iamchan/article/details/84026025