Android菜鸟成长记4-button点击事件
Button
1.button按钮的创建
一般来说,在我们新建一个Android项目的时候,会有会默认有一个activity_main.xml的文件
如果你在新建项目的时候,把Create Activity没勾的话(下图是新建项目的时候的一个页面),就需要,新建一个
新建一个布局的方法
layout -> 右键点击 -> new - > Android XML File 然后会弹出创建布局文件的窗口 。
好了,布局加载好了,现在进入我们的主题,添加一个按钮。
首先,点击activity_main.xml文件,我们看到这样的一个界面
那么我们要怎么创建按钮呢,其实很简单,只要把最左边的button拖到你设计的布局里面即可
这样我们的按钮就创建完,是不是很简单。
然后我们再看看在窗口的最下方有两个切换卡,左边是 Graphical Layout,右边是 activity_main.xml
Graphical Layout 是当前的可视化布局编辑器,在这里你不仅可以预览当前的布局,还可以通过拖拽的方式编辑布局 (既是我们刚刚创建按钮的地方)
activity_main.xml 则是通过 XML 文件的方式来编辑布局
activity_main.xml文件
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:paddingBottom="@dimen/activity_vertical_margin"
6 android:paddingLeft="@dimen/activity_horizontal_margin"
7 android:paddingRight="@dimen/activity_horizontal_margin"
8 android:paddingTop="@dimen/activity_vertical_margin"
9 tools:context="com.example.hello.MainActivity" >
10
11 <TextView
12 android:id="@+id/textView1"
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 android:text="@string/hello_world" />
16
17 <Button
18 android:id="@+id/button1" 这个是你创建的按钮id,很重要的一个东西
19 android:layout_width="wrap_content" //这里可以控制按钮的长度
20 android:layout_height="wrap_content" //这里可以控制按钮的高度
21 android:layout_alignLeft="@+id/textView1"
22 android:layout_below="@+id/textView1"
23 android:layout_marginTop="26dp"
24 android:text="Button" /> 这里可以修改按钮的名字
25
26 </RelativeLayout>
对于button的介绍的差不多了,下面让我们搞点新意思吧。
现在我们创建好的按钮,只能看,无论你在模拟器或手机上怎么点击都是没什么反应的,那么怎样才能让他有反应呢。
相信学过网页的都知道我们差了点什么,没错,就是点击事件。
Android的点击事件是创建
首先,我们打开打开项目下的src文件夹的com.example.项目名(系统会默认前缀是com.example开头的)下的MainActivity.java
1 package com.example.hello; 2 3 import android.app.Activity; 4 import android.app.AlertDialog; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.view.MenuItem; 8 import android.view.View; 9 import android.view.View.OnClickListener; 10 import android.widget.Button; 11 import android.widget.TextView; 12 import android.widget.Toast; 13 14 15 public class MainActivity extends Activity { 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 22 //定位textView1这个控件 23 TextView tv1 = (TextView) this.findViewById(R.id.textView1); 24 //对控件进行赋值,改变显示的内容 25 tv1.setText("你好,Android"); 26 27 final TextView textview = (TextView)findViewById(R.id.textView2); 28 //根据id获取按钮的控件 29 Button btn = (Button) this.findViewById(R.id.button1); 30 //修改按钮的名字 31 btn.setText("点我"); 32 //给按钮赋予点击事件 33 34 btn.setOnClickListener(new OnClickListener() { 36 @Override 37 38 public void onClick(View v) { 39 45 //第一个参数:上下文,指的是activity,所以写的是MainActivity.this 46 //第二个参数:设置弹出的信息 47 //第三个参数,设置显示的实践 48 Toast.makeText(MainActivity.this, "点解要点我", Toast.LENGTH_LONG).show(); 49 } 50 }); 51 } 52 53 54 @Override 55 public boolean onCreateOptionsMenu(Menu menu) { 56 // Inflate the menu; this adds items to the action bar if it is present. 57 getMenuInflater().inflate(R.menu.main, menu); 58 return true; 59 } 60 61 @Override 62 public boolean onOptionsItemSelected(MenuItem item) { 63 // Handle action bar item clicks here. The action bar will 64 // automatically handle clicks on the Home/Up button, so long 65 // as you specify a parent activity in AndroidManifest.xml. 66 int id = item.getItemId(); 67 if (id == R.id.action_settings) { 68 return true; 69 } 70 return super.onOptionsItemSelected(item); 71 } 72 }
上面的就是一个简单的点击事件,首先我们要获取按钮的控件,findViewById(R.id.button1)就是根据button的id来获取他,就是上面说到了buttoon的id了。
然后我们看一下运行结果
这就是一个简单的按钮点击事件了
或许大家对于Toast不理解,现在简单的介绍一下
Toast 是 Android 系统提供的一种非常好的提醒方式, 在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间
但是对于上面的写法大家是不是觉得好长好难看,那么下面我们来改良一下代码,然我们看的更舒服
首先我们新建一个类btnClickListen来继承Android的OnClickListener借口
1 package com.example.hello; 2 3 import android.content.Context; 4 import android.view.View; 5 import android.view.View.OnClickListener; 6 import android.widget.Toast; 7 8 public class btnClickListen implements OnClickListener { 9 10 private Context context; 11 12 public btnClickListen (Context c) { 13 this.context = c; 14 } 15 16 17 @Override 18 public void onClick(View v) { 19 Toast t = Toast.makeText(context, "点解要点我", Toast.LENGTH_LONG); 20 t.show(); 21 22 } 23 24 }
1 package com.example.hello; 2 3 import android.app.Activity; 4 import android.app.AlertDialog; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.view.MenuItem; 8 import android.view.View; 9 import android.view.View.OnClickListener; 10 import android.widget.Button; 11 import android.widget.TextView; 12 import android.widget.Toast; 13 14 15 public class MainActivity extends Activity { 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 22 //定位textView1这个控件 23 TextView tv1 = (TextView) this.findViewById(R.id.textView1); 24 //对控件进行赋值,改变显示的内容 25 tv1.setText("你好,Android"); 26 27 final TextView textview = (TextView)findViewById(R.id.textView2); 28 //根据id获取按钮的控件 29 Button btn = (Button) this.findViewById(R.id.button1); 30 //修改按钮的名字 31 btn.setText("点我"); 32 //给按钮赋予点击事件 33 btn.setOnClickListener( new btnClickListen(this)); 34 35 } 36 37 38 @Override 39 public boolean onCreateOptionsMenu(Menu menu) { 40 // Inflate the menu; this adds items to the action bar if it is present. 41 getMenuInflater().inflate(R.menu.main, menu); 42 return true; 43 } 44 45 @Override 46 public boolean onOptionsItemSelected(MenuItem item) { 47 // Handle action bar item clicks here. The action bar will 48 // automatically handle clicks on the Home/Up button, so long 49 // as you specify a parent activity in AndroidManifest.xml. 50 int id = item.getItemId(); 51 if (id == R.id.action_settings) { 52 return true; 53 } 54 return super.onOptionsItemSelected(item); 55 } 56 }
现在是不是好看很多了。
其实第二种两种方法是一样的,第一种其实就是我之前博客说的匿名内部类的一种写法。