Android——文本控件——Button

来源:互联网 发布:淘宝有名的网红店 编辑:程序博客网 时间:2024/06/01 21:27

Button

a.基本信息

继承于TextView,具有其一切属性

b.作用

用于响应用户的点击操作,完成相应的事件

c.用法

在代码中注册监听器View.onClickListener

a.内部类(名字解释:在最外面的MainActivity类中新建Listener类——一个类包含另一个类)

public class MainActivity extends Activty{
//.1.声明控件
private Button btnTest;
@Override
protected void onCreate(Bundle savedInstanceState){
super.oncreate(savedIntanceState);
setContentView(R.layout.activity_main);//加载布局文档
//2.关联控件
btnTest=(Button)findViewById(R.id.button1);//为使用具有普遍性规定finViewByID得到的都是View对象,若赋值需转化成相应类型
//3.代码注册监听
Listener listener=new Listener();
//下面这个是Button类的方法,当Button类的变量对应的按钮被点击时会实现该方法   
btnTest.setOnClickListener(Listener//需要开发者传入 实现接口view.onClickListener的类对象所以我们需要自己创建一个类);

}
class Listener implements View.onClickListener{
@override
public void onClick(View v  //View类型的形参){
//设置点击后发生的事情
Log.i("Text","被点击了");
}
}


}
//创建Button控件  在onCreate方法中将创建的Button控件和布局中的id关联  为实现这个Button的setOnClickListener(传实现view接口的类)方法让其点击后有反应(原来没有?)
我们自己创一个实现view接口的Listener类 重写view下系统自带类没有的onclick方法   加入点击事件   这样就加入了点击效果 最后setOnClickListener方法可以实现了

换句话说就是建一个Listener类 new出一对象listener  把这个对象传给setOnClickListener方法    

setOnClickListener方法负责响应点击去执行listener    lsitener负责编辑点击后作的事件

ps:一切的目的都是为了实现setOnClickListener

2.匿名类

目的一样,也是我们要去给setOnClickListener方法传参数

这次我们不创建新类而是把直接new出(形参要求的)对象

//创建新类的过程省略

btn.setOnClcikListener(new View.OnClickListener){

@Override

public void onClick(View v){

log.i("Text",“以匿名类的方式实现点击”)

}

}

3.XML设置android:onClick(原理暂时没明白)

第一步:xml文件中添加

<Button

……(button的基本属性)

android:onClick=“Click”

/>

第二步:java文件回调click方法

在MainActivity类中添加:

public void click(View v){

log.i("Text","以xml的方式完成点击")

}


PS:比较
1.直接setOnClickListener.
如果你的activity中只有少量的三两个按钮 适合使用
2.implement OnClickListener 实现这个接口
这适合多个按钮,比如计算器、虚拟键盘等 使用这个可以减少代码量,直接根据按钮的ID去添加事件
3. 在xml中写onClick
这可以使你的代码很清晰,你可以把所有的按钮事件写在一个文件里面,想用的时候可以在xml文件里直接调用 使代码看上去更有层次感。
三种方式各有利弊,根据情况选择使用。

原创粉丝点击