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

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

    个人自学安卓开发

    来源:天哥在奔跑 

  • 相关阅读:
    C# MenuStrip Visible=false bug的解决方案
    WTL 命令行编译
    LCS 最长公共字串算法实现
    调用系统打开文件OpenAs_RunDLL
    ToolStripSplitButton Checked 效果
    WTL 中使用GDI+ 备忘
    P7482 不条理狂诗曲 题解
    CF1557 比赛记录
    P2519 [HAOI2011]problem a 题解
    CF1540B Tree Array 题解
  • 原文地址:https://www.cnblogs.com/y112102/p/12491082.html
Copyright © 2011-2022 走看看