Android Button的学习使用
Button的主要作用
Button是Android中非常常用且重要的控件,我们可以为Buttoo你添加事件来对程序进行逻辑判断和处理。
使用方法
在布局文件中添加如下代码
<Button
android:id="@+id/login_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/btn_bg_selector"
android:text="LOG IN"
android:textColor="#ffffff"
android:textStyle="bold" />
效果图如下
可以通过添加selector文件为button添加更加炫酷的效果,比如按下的时候改变字体或底层颜色,也可以添加shape为button修改边框,添加圆角等效果。
Button添加事件
Button添加事件有很多种方法,目前我所知道的有4种,分别是获取到组件后,添加事件,在布局中就指定添加事件的方法,使用Xutils框架。
一、获取组件并添加事件
首先获取到组件
login_btn = (Button) findViewById(R.id.login_btn);
设置事件监听,用到了setOnClickListener方法,传入的是一个OnClickListener接口,所以可以使用匿名内部类的方式。
login_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "点击了按钮",
Toast.LENGTH_SHORT).show();
}
});
这种方法适合当某一个按钮控件只有它自己做这个逻辑处理,和其他的控件使用的方式不一样时。如果有很多Button时就需要使用下面的方式。
Button添加事件监听的第二种方法
首先还是获取组件
login_btn = (Button) findViewById(R.id.login_btn);
添加事件
login_btn.setOnClickListener(this);
这个方法需要类实现OnclickListener接口,然后实现接口中的抽象方法
public void onClick(View v) {
switch (v.getId()) {
case R.id.login_btn:
Toast.makeText(getApplicationContext(),
"点击了按钮", Toast.LENGTH_SHORT).show();
break;
}
}
Button添加事件监听的第三种方法
在布局文件中就指定点击事件的触发方法,在布局文件中的Button里添加
android:onClick="login"
在java代码中写点击的方法,方法名必须和onClick中的一样,并且格式是public void 方法名(View view)。代码如下:
public void login(View v) {
String userName = un_et.getText().toString().trim();
String password = pwd_et.getText().toString().trim();
if("".equals(userName) || "".equals(password)){
Toast.makeText(getApplicationContext(),
"用户名或密码不能为空", Toast.LENGTH_SHORT).show();
}
Toast.makeText(getApplicationContext(),
"username:"+userName+"\npassword:"+password,
Toast.LENGTH_SHORT).show();
}
这个方法和第一种方法作用基本类似,并且不需要再找到控件,比第一种方便些,但是这个方法的弊端是不能添加长按事件
Button添加事件监听的第四种方法
使用框架能够很快的提高开发效率,使用Xutils时,首先导入jar包,然后在类中引用Xutils的ViewUtils。
ViewUtils.inject(this);
之后就能够使用注解的方式寻找控件,或给控件添加方法
寻找控件的方法如下:
@ViewInject(R.id.un_et)
private EditText user_et;
@ViewInject(R.id.pwd_et)
private EditText pwd_et;
给控件添加点击事件
@OnClick(R.id.login_btn)
public void login(View v) {
String username = user_et.getText().toString().trim();
String password = pwd_et.getText().toString().trim();
if ("".equals(username) || "".equals(password)) {
showToast("用户名或密码不能为空");
} else {
showToast("UserName:" + username + "\nPassword:" + password);
}
}
Button的长按事件
长按事件也是Android中非常常用的,长按事件调用的是setOnLongClickListener
login_btn.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(getApplicationContext(), "长按事件触发了。。。",
Toast.LENGTH_SHORT).show();
//返回为true事件就不会继续往下传递,即是不会再触发点击事件
return true;
}
});