zoukankan      html  css  js  c++  java
  • 安卓 基于监听的事件处理机制

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

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

    例子:

    实现监听事件的方法

     

     1:通过事件源所在的类实现,内部类,匿名类,通过外部类

    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 参数。这里不演示 实际开发中也用的很少

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

    个人自学安卓开发

    来源:天哥在奔跑 

  • 相关阅读:
    charles修改响应体
    charles重发网络请求&模拟慢速网络&过滤网络请求
    charles修改请求体内容
    monkeyrunner环境搭建以及实例(转)
    django模型中的抽象类(abstract)
    Linux启动/停止/重启Mysql数据库的方法
    ava.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind (解决思路)
    unix PS命令和JPS命令的区别
    mysql:表注释和字段注释
    mysql-关于Unix时间戳(unix_timestamp)
  • 原文地址:https://www.cnblogs.com/y112102/p/12491082.html
Copyright © 2011-2022 走看看