安卓 基于监听的事件处理机制

事件在安卓里面是比较重要的概念(在其他的js ,c# 也有类似)。

事件三要素:事件源,事件,事件监听器

安卓 基于监听的事件处理机制

 

例子:

安卓 基于监听的事件处理机制

 

实现监听事件的方法

 

 安卓 基于监听的事件处理机制

 

 code:

package com.example.androidlsw;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.androidlsw.util.MyClickListener;
import com.example.androidlsw.util.ToastUtil;

/**
 * @author lsw
 * implements View.OnClickListener: 通过事件源所在的类实现
 */
public class EventActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn_event;

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

        btn_event=findViewById(R.id.btn_event);

        /*匿名类*/
        btn_event.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ToastUtil.getInstance().showMsg(EventActivity.this,"点击了我");
            }
        });

        /*内部类*/
        btn_event.setOnClickListener(new OnClick());

        /*通过事件源所在的类实现*/
        btn_event.setOnClickListener(EventActivity.this);

        /*通过外部类*/
        btn_event.setOnClickListener(new MyClickListener(EventActivity.this));
    }

    @Override
    public void onClick(View v) {
        ToastUtil.getInstance().showMsg(EventActivity.this,"点击了我");
    }

    /**
     * 内部类
     * */
    class  OnClick implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.btn_event:
                    ToastUtil.getInstance().showMsg(EventActivity.this,"点击了我");
                    break;
                    default:
            }
        }
    }
}

外部类:其实本质是自己新建了一个类 继承click

public class MyClickListener implements View.OnClickListener {

    private  Activity mActivity;

    public  MyClickListener(Activity activity){
        this.mActivity=activity;
    }

    @Override
    public void onClick(View v) {
        ToastUtil.getInstance().showMsg(mActivity,"点击了我");
    }
}

  最后一种:直接在xml里面写 类似JavaScript  html 写 onclick ,区别是安卓会自带view 参数。这里不演示 实际开发中也用的很少

 

  如果设置了同一个类型的事件,最后一个事件起作用。

 

个人自学安卓开发

来源:天哥在奔跑 

安卓 基于监听的事件处理机制

上一篇:iview weapp输入组件input事件顺序


下一篇:[Trouble shooting] Alt-A shortcut taken by another app and conflict with Emacs' M-a