Button和ImageButton
Button下的文字,数字,字符串一般不直接在xml文件中写,建议到values下的string中建立对应字符串,例如在values->string下新建
然后去xml的Button中
- ImageButton是用于在按钮上显示图片的。所以是没有android:text这个属性的。并且如果在布局文件中写上android:text="我是一个按钮",在android 4.4环境中是不会看到任何效果的
onClick事件
匿名内部类的实现
(View 是所有控件的父类)
- 初始化当前所需控件,例如private Button loginButton;
- findViewById--返回的是一个View,故需要强制转换成所需控件类型,例如loginButton= (Button)findViewById(R.id.button1);
- findViewById是如何查找对应view的id的?gen目录下中自动生成的R文件中有一个类id,id类中自动为每个控件创建了一个id
- 设置Button的监听器,通过监听器实现我们点击Button要操作的事情(通过匿名内部类方式实现)
loginButton.setOnClickListener...
(直接在里面new一个匿名内部类)
独立类的实现
- 在onCreate()方法外实现一个外部类,继承自(implements--因为OnClickListener是一个接口不是一个类,所以不用extends)OnClickListener,然后再在这个类里面写逻辑,该类为其他按钮的父类,比如你将在一个Activity中实现10个按钮,而这10个按钮需要实现同一个功能,就可以在父类中写这个公用逻辑,然后再内部类中写各个按钮的其他不同逻辑, 这样避免了代码的冗余
- v代表当前点击按钮的对象,哪个按钮被点击了它会把这个按钮的对象传给v。
外部类的这种用法,按钮不仅会执行子类中的onClick()方法,还会触发父类中的onClick()方法
- 注意到里面还用到一个v.setAlpha(0.5f),该方法设置透明度,点击按钮后按钮透明
接口方式实现监听事件
1.在当前Activity类上通过implement onClickListener实现该接口此时会对应生成一个onClick方法
2.将监听器绑定到Button上
实例:private ImageButton imgBt;
初始化:imgBt= (ImageButton)findViewById(R.id.imageButton1);
3.给该Button设置监听器
imgBt.setOnClickListener(this);
this访问当前类的接口的一个对象,当做这件事后imgBt.setOnClickListener(this);onClick事件就绑定到Button上去了,此时点击Button就会触发当前实现的onClick方法