android xml事件,安卓事件

1、自定义内部类

2、匿名内部类

3、当前activity去实现事件接口

4、在布局文件xml中添加点击事件属性(使用频率非常高)

补充:

a、Android 在xml文件中 给某个控件声明 id 是: "@+/自定义名字" ,

获取是: "@/自定义的名字" , 例如: android:id="@id/btn1", 文本 android:text="@string/long_text" ,图片等。

b、安卓的View 的继承关系:

3a8bb0e6b518

安卓的View继承关系.png

1、自定义内部类 MyClickListener

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 1、获取按钮(自定义内部类)

Button btn = findViewById(R.id.btn1); // 通过 findViewById 去找索引

// 2、注册按钮

MyClickListener mclick1 = new MyClickListener();

btn.setOnClickListener(mclick1);

}

// 3、内部类 -- 点击事件触发

class MyClickListener implements View.OnClickListener {

@Override

public void onClick(View view) {

Log.e("tag","点击了......");

}

}

xml文件

android:id="@+id/btn1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="按钮点击事件">

2、匿名内部类(就是 生成对象的时候才知道是什么类名)

做参数 传参的时候 new Xxxxclass 就是匿名对象了。

Button btn2 = findViewById(R.id.btn1);

btn2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Log.e("Tag","通过匿名内部类实现按钮点击");

}

});

3、当前activity去实现事件接口

自己写个接口,根据1中的“自定义内部类” 思想,我们可以看到只要是一个类都是可以 执行(implements)一个接口。那么为何自己的类 使用不是更好吗?是的,开工,跟着我实现这个接口吧。

// implements View.OnClickListener 是自己添加的 要实现的接口

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 定义一个按钮

Button btn3 = findViewById(R.id.btn1);

btn3.setOnClickListener(this);// this 指当前类

}

@Override

public void onClick(View view) {

Log.e("TAG","使用本类实现了OnClickListener");

}

}

4、在布局文件xml中添加点击事件属性

xml文件是这样 --- 推荐给个ID

android:id="@+id/btn4"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="在xml文件中绑定事件"

android:onClick="myAction"/>

android:id="@+id/btn5"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="在xml文件中绑定事件"

android:onClick="myAction"/>

//参数:被点击的控件对象 View

public void myAction(View v){

switch (v.getId()){

case R.id.btn4:

Log.e("TAG","通过xml绑定点击事件 btn4");

break;

case R.id.btn5:

Log.e("TAG","通过xml绑定点击事件 btn5");

break;

}

}

demo效果:

3a8bb0e6b518

最后一种经常使用.jpeg

疑惑?

为什么click里边都是 onClick(View view),我点击的是Button呀!

答:上面给了个View的继承关系,button也是继承View的。因为点击事件并不仅仅Button才有事件,其它UI控件也要,所以使用View更加合适。

总结:

1、如果多个按钮(点击事件)的操作差不多就使用自定义,可以减少代码,更加简洁。

2、如果某个按钮的事件是唯一的,那么使用 匿名内部类吧。(没有绝对,只有更好)

3、xml中绑定事件 经常使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值