Button和ImageButton控件及其监听事件的实现方法

Button和ImageButton

Button和ImageButton控件及其监听事件的实现方法_第1张图片
Paste_Image.png
Button和ImageButton控件及其监听事件的实现方法_第2张图片
Paste_Image.png

Button下的文字,数字,字符串一般不直接在xml文件中写,建议到values下的string中建立对应字符串,例如在values->string下新建


Paste_Image.png

然后去xml的Button中

Button和ImageButton控件及其监听事件的实现方法_第3张图片
Paste_Image.png
  • ImageButton是用于在按钮上显示图片的。所以是没有android:text这个属性的。并且如果在布局文件中写上android:text="我是一个按钮",在android 4.4环境中是不会看到任何效果的

onClick事件

Button和ImageButton控件及其监听事件的实现方法_第4张图片
Paste_Image.png
Button和ImageButton控件及其监听事件的实现方法_第5张图片
Paste_Image.png
匿名内部类的实现

(View 是所有控件的父类)

  • 初始化当前所需控件,例如private Button loginButton;
  • findViewById--返回的是一个View,故需要强制转换成所需控件类型,例如loginButton= (Button)findViewById(R.id.button1);
  • findViewById是如何查找对应view的id的?gen目录下中自动生成的R文件中有一个类id,id类中自动为每个控件创建了一个id
  • 设置Button的监听器,通过监听器实现我们点击Button要操作的事情(通过匿名内部类方式实现)
    loginButton.setOnClickListener...
Button和ImageButton控件及其监听事件的实现方法_第6张图片
Paste_Image.png

(直接在里面new一个匿名内部类)

独立类的实现
  • 在onCreate()方法外实现一个外部类,继承自(implements--因为OnClickListener是一个接口不是一个类,所以不用extends)OnClickListener,然后再在这个类里面写逻辑,该类为其他按钮的父类,比如你将在一个Activity中实现10个按钮,而这10个按钮需要实现同一个功能,就可以在父类中写这个公用逻辑,然后再内部类中写各个按钮的其他不同逻辑, 这样避免了代码的冗余
Button和ImageButton控件及其监听事件的实现方法_第7张图片
Paste_Image.png
  • v代表当前点击按钮的对象,哪个按钮被点击了它会把这个按钮的对象传给v。
    外部类的这种用法,按钮不仅会执行子类中的onClick()方法,还会触发父类中的onClick()方法
Button和ImageButton控件及其监听事件的实现方法_第8张图片
Paste_Image.png
  • 注意到里面还用到一个v.setAlpha(0.5f),该方法设置透明度,点击按钮后按钮透明
Button和ImageButton控件及其监听事件的实现方法_第9张图片
Paste_Image.png
接口方式实现监听事件

1.在当前Activity类上通过implement onClickListener实现该接口
Paste_Image.png

此时会对应生成一个onClick方法


Button和ImageButton控件及其监听事件的实现方法_第10张图片
Paste_Image.png

2.将监听器绑定到Button上
实例:private ImageButton imgBt;

初始化:imgBt= (ImageButton)findViewById(R.id.imageButton1);
3.给该Button设置监听器
imgBt.setOnClickListener(this);

this访问当前类的接口的一个对象,当做这件事后imgBt.setOnClickListener(this);onClick事件就绑定到Button上去了,此时点击Button就会触发当前实现的onClick方法

你可能感兴趣的:(Button和ImageButton控件及其监听事件的实现方法)