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


    事件在安卓里面是比较重要的概念(在其他的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 参数。这里不演示 实际开发中也用的很少

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

    个人自学安卓开发

    来源:天哥在奔跑 

  • 相关阅读:
    解决VS2005打开js,css等文件,中文都是乱码的问题
    PHP代码优化43条方法实战列表
    php长文章分页
    ASP通用分页类
    用Asp隐藏文件路径,实现防盗链
    用 PHP5 打造简易的 MVC 架构
    一男赶集卖猪,天黑遇雨发生的4个故事,有启发意义的哦!
    西湖雾湖夜湖雪湖
    php生成静态html分页实现方法
    将网络上的图片下载到本地ASP代码
  • 原文地址:https://www.cnblogs.com/y112102/p/12491082.html
Copyright © 2020-2023  润新知