0.我们都知道Java在开发界面的时候,需要使用监听事件,只有在写过监听事件之后才能够完整的使用软件,比如说,我们在写了一个button之后,想点击button,然后在文本标签中变换字体该怎么做呢?那么我们就需要对button这个view进行添加监听事件,添加完监听事件之后,就可以对其进行修改了。具体如下:
1.layout.xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/start"
android:layout_width="match_parent"
android:layout_height="100dp"
android:textSize="30sp"
/>
<Button
android:layout_width="match_parent"
android:layout_height="100dp"
android:id="@+id/button_01"
android:text="button_01"
android:textSize="30sp"
android:layout_marginTop="100dp"
/>
<Button
android:layout_width="match_parent"
android:layout_height="90dp"
android:id="@+id/button_02"
android:text="button_02"
android:textSize="30sp"
android:layout_marginTop="200dp"
/>
<Button
android:layout_width="match_parent"
android:layout_height="100dp"
android:id="@+id/button_03"
android:text="button_03"
android:textSize="30sp"
android:layout_marginTop="300dp"
/>
</RelativeLayout>
这里面分别添加了三个Button,依次id为button_01,button_02,button_03。布局效果如下:
写上id是为了方便在Java代码中找到这个对象,然后对其进行编辑。
我们发现这里的xml文件和css代码类似,就是对其整个手机的APP布局进行设计。关键的问题是需要注意一些xml文件的格式问题,比如说,xml中只有一个根目录,其它标签都必须在这个根目录下面。这里我们使用的就是RelativeLayout根标签,这里的RelativeLayout就是相对布局的意思,在里面我们就可以使用margin,padding等来设置摆放位置,这就和css布局很类似。其实一些属性值也很类似。这里就不再多做介绍了。
2.弄完这个布局文件之后,我们就需要对这个按钮进行代码的测试了。
3. 就像最开始说的那个样子,我门虽然有了一个按钮,但是如果不对这个按钮进行监听操作,即使点击了这个按钮,依然无法产生效果,于是添加监听事件。
4.添加监听事件是一个稍微麻烦的事情,但是我们需要畏难而上,我们需要实现
View控件有一个setOnClickListener()方法,于是我们可以使用button1.setOnClickListener()方法,但是这个setOnClickListener()方法需要一个参数,该方法如下:
public void setOnClickListener(View.OnClickListener l) {
throw new RuntimeException("Stub!");
}
于是我们需要在该方法中新建一个View.OnClickListener对象,只有这样,才能继续调用该方法。但是我们知道View.OnClickListener是一个接口
public interface OnClickListener {
void onClick(View var1);
}
所以我们需要使用一个类实现这个接口,然后再新建这个类对下 作为参数即可。于是便有了以下三种方法:
//1.使用匿名内部类
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myTextView.setText("你点击了Button_01");
}
});
//2.外部类实现这个接口
button2.setOnClickListener(new OutButtonListener(myTextView));
//3.使用内部类实现按钮点击功能
class ButtonListener implements View.OnClickListener{
@Override
public void onClick(View view) {
myTextView.setText("你点击了Button_03!");
}
}
button3.setOnClickListener(new ButtonListener());
注:
1.在使用外部类实现该接口的时候,我们需要新建一个类,名为OutButtonListener,同时,我们要注意要将该类建在和当前的这个类在同一目录下,如下所示:
外部类OutButtonListener代码如下:
package com.example.myapplication;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
/**
* Created by 时知夜霖 on 2017/3/12.
*/
//继承自View.OnClickListener
public class OutButtonListener implements View.OnClickListener {
private TextView mTextView;
public OutButtonListener(TextView mTextView) {
this.mTextView = mTextView;
}
public void onClick(View v){//使用View 作为参数
//按下按钮之后的事情
this.mTextView.setText("你点击了Button_02");
//((Button)v).setText("你点击了Button_02");
}
}
2.运行结果如图所示: