您的位置:首页 > 移动开发 > Android开发

步步为营学习android,步步惊喜之android基础篇-按钮学习

2012-09-25 18:24 633 查看
Android基础篇-Button学习(三种绑定监听器方式)



   不好意思,直到现在才更新我的博客!学习android系统不得不从最基础的UI组件学习,其中首推的就是Button。Button是一个常用的系统的组件。一般通过与监听器搭配使用,从而触发Button事件。关于监听器,作为开始没有任何java以及编程基础的我,不知道其中的监听器原理,开始只知道照抄代码,但是不知所云。其实监听器的原理就是J***AGUI中的事件模型。大家可以看马士兵的java视频教程,讲的很好,很详细:
http://v.youku.com/v_show/id_XNDU1NDQ0MjA=.html?f=2420787

作为零基础的开发者来说,看看javaGUI开发是对android开发来说是很重要的,可以说是一种必要。

我个人理解就是这样,监听器就像一个火警警报器,当警报器响起来的时候,说明着火勒,我们需要灭火。点击Button的时候表示着火勒,监听器反应表示警报器响了,监听器的动作表示灭火的动作。下面讲述Button使用过程。

1. 新建一个 android工程,命名为Android_Button

2. 先在布局文件添加三个按钮:

<?xml version="1.0"encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >



<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"/>

<Button

android:id="@+id/btn1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Button1"

/>

<Button

android:id="@+id/btn2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Button2"

/>

<Button

android:id="@+id/btn3"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Button3"

/>

</LinearLayout>

在这里需要解释一下button中的元素 :

android:id="@+id/btn1"表示ID属性,定义格式为android:id="@+id/name(name自己可以取,是唯一的)。为每个组件添加好新声明的ID之后,在源代码中通过R资源就可以引用到。

android:layout_width="fill_parent"表示button的宽度,fill_parent表示它的宽占了整个屏幕。

android:layout_height="wrap_content"表示button的高度,wrap_content表示高度与button中字体高度一致。在其他组件里这些元素意思也是这样比如TextView中。

在这里需要解释一下button中的元素 :

3 .java 文件:

在Android_ButtonActivity文件中绑定Button

a: 声明Button对象

private Buttonbtn1,btn2,btn3;在这里我们声明三个Button,在这里需要引用Button包,直接ctrl+shift+o(快捷键)引用包。

b:通过findViewById(int
id)方法引用在布局文件中定义的组件并对其实例化。

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

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

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

c:使用监听器:

想知道按钮是否被用户点击,就需要一个点击监听器来对其进行监听,然后通过监听器来获取点击事件,就可以判定关注的按钮是否被用户所点击。

下面重点说明一下使用监听器的三中方式。原理都是一样实现接口onClickListener重写点击监听器的抽象函数onClick。一般情况下有三种代码风格。

第一种:使用内部类实现点击监听器进行监听:

关于这种方式,对于java基础不好的最好要看看我刚才推荐的视频java GUI(马士兵)里面有这个介绍。

btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

text1.setText("you have clicked Button1");

}

});

btn2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

text1.setText("you have clicked Button2");

}

});

btn3.setOnClickListener(new OnClickListener(

) {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

text1.setText("you have clicked Button3");

}

});

第二种方式重写抽象函数。

对需要的按钮进行按钮绑定监听器操作,一般有按钮被点击,就会自动响应onClick函数,并将点击的Button(Button也是一个view)传入;最后就可以在onClick函数中书写点击点击就会触发的事件(因为定义了多个按钮,所以在onClick函数中对系统传人的view进行按钮匹配的判断,让不同的按钮做不同的处理事件)。代码如下:

与前面不同的是:class要变成这样的形式就是实现接口(红色的部分以及重写onClick方法):

public class Android_ButtonActivity extends Activity implements OnClickListener{

btn1.setOnClickListener(this);

btn2.setOnClickListener(this);

btn3.setOnClickListener(this);



@Override

public void onClick(View v){

// TODO Auto-generated method stub

switch(v.getId()) {

case R.id.btn1:

text1.setText("you haveclicked Button1");

break;

case R.id.btn2:

text1.setText("you haveclicked Button2");

break;

case R.id.btn3:

text1.setText("you haveclicked Button3");

break;

}

};

}



第三种:定义类。先声明:

OnClickListener

ButtonListener1=null,ButtonListener2=null,ButtonListener3=null;



然后建立三个Button监听器

ButtonListener1 = new OnClickListener() {



@Override

public void onClick(View v) {

// TODO Auto-generated method stub

text1.setText("you have clicked Button1");

}



};

ButtonListener2 = newOnClickListener() {



@Override

public void onClick(View v) {

// TODO Auto-generated method stub

text1.setText("you have clicked Button2");

}



};

ButtonListener3 = newOnClickListener() {



@Override

public void onClick(View v) {

// TODO Auto-generated method stub

text1.setText("you have clicked Button3");

}



};

最后是绑定

btn1.setOnClickListener(ButtonListener1);

btn1.setOnClickListener(ButtonListener2);

btn1.setOnClickListener(ButtonListener3)

第三种方法我觉得不是很好,不推荐给大家,写出来,主要是为了哪些基础不好的人能理解,知道有这种方式,我开始就有点不知所云。三种方法都在源代码里面有,只要把注释(/* */)去掉就可以使用三种方法。

总结:到次关于Button的相关介绍已经结束。可能对于高手来说很简单,我主要目的是以零基础的对象为目的,还希望高手多指教,欢迎大家提意见,也请大家多多原谅其中的错误与瑕疵。根据大家的意见,我会完善我的文章。关于次程序所有的源代码可以从下面的链接种下载!

http://download.csdn.net/detail/tianke0711/4596903
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: