上一节写到android的工程目录结构,这一节继续,开始学习控件,中间的跨度挺大,关于Activity和intent的知识我就略过了,原因很简单,网上的关于那个的资料特别多,而且理论的东西我这都是了解就行,那些东西,在应用的过程中自然会熟练起来,还有就是我也是新手,对于那些东西不敢写,怕误人...。
这次写的控件有三个,TextView、EditText、Button。我以前学过winform,很简单就能找到对应的空间,TextView就是一个lable标签,用于显示不可编辑的文字。EditText是一个文本框,用于获取用户输入的文本信息。Button就是自然一个按钮了。
通过一个例子来学习三个控件。下面来做一个计算两个数字和的小程序,三个控件一次学完。
在Eclipse新建一个工程,如图:
创建好以后,打开res目录下,layout下的main.xml,切换到xml代码视图。把代码修改为如下
<?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" >
<EditText
android:id="@+id/num1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number"></EditText>
<TextView
android:text="@string/symbol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
/>
<EditText
android:id="@+id/num2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number"></EditText>
<Button android:id="@+id/plusbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/plus" />
</LinearLayout>
下面讲解这段代码,这个文件首先是一个xml头,里面是一个LinearLayout布局控件,这是一个线性布局空间,先不说,以后留着单独学习。布局空间里面放了两个EditText控件,用于让用户输入两个数字。中间是一个TextView控件,控件主要用来显示文字。最后是一个按钮控件,点击计算值。
以上几个控件都有几个属性:
android:id属性,是控件的id,格式为@+id/someid,这样在程序的R.java文件里面就能自动生成控件的id值的索引,在程序中就可以用R.id.someid取得控件。
android:layout_width和android:layout_height属性,分别是空间的宽和高,通常值为 fill_parent或者wrap_content,当然也可以用数值。
android:text属性是控件上面显示的文本,值可以直接写,但是不建议,一般是在res目录下的string.xml里面定义,在代码里用@string/str来调用,或者在后台代码利用R.sting.str来使用。
android:inputType 我在两个EditText中都加入了一个inputType属性,值为number,这个值的意思是只允许输入数字,因为我们是求两个数字的和。可以去掉这个属性前后比较一下。
android:textSize这个属性就是字体的大小。单位有sp,dp,px等。可以百度一下。
最后的button上面还有一个android:layout_gravity属性,用这个属性,我把button设置成了居中显示。
这个文件就讲解到这里,下面来看string.xml里面的内容
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Textview_EditText_Button!</string>
<string name="app_name">Textview_EditText_Button</string>
<string name="symbol">加上</string>
<string name="plus">计算</string>
<string name="warning">请输入完整!</string>
<string name="about">关于</string>
<string name="exit">退出</string>
<string name="aboutmessage">天意人间,YYJ</string>
</resources>
下面三个就是我自己加的,第一个是标签上的文字,第二个是按钮上面的文字。最后一个在后面的程序里面用来提示。
界面部分到此结束,现在有个样子了,可以运行下看看,如图
下面来编写程序实现功能。
下面是编写好的程序,Textview_EditText_Button.java的代码
package com.yyj.Textview_EditText_Button; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Textview_EditText_Button extends Activity { /** Called when the activity is first created. */ private EditText num1; private EditText num2; private Button plusbtn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); num1=(EditText)findViewById(R.id.num1); num2=(EditText)findViewById(R.id.num2); plusbtn=(Button)findViewById(R.id.plusbtn); plusbtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub String numstr1=num1.getText().toString(); String numstr2=num2.getText().toString(); if (numstr1.length()>0&&numstr2.length()>0) { int n1=Integer.parseInt(numstr1); int n2=Integer.parseInt(numstr2); Toast.makeText(Textview_EditText_Button.this, n1+"+"+n2+"="+(n1+n2), Toast.LENGTH_LONG).show(); }else { Toast.makeText(Textview_EditText_Button.this, R.string.warning, Toast.LENGTH_LONG).show(); } } }); } }
接着来说这一段代码,先是定义了三个控件
private EditText num1; private EditText num2; private Button plusbtn;
然后通过findViewById取得程序中的两个文本框和一个按钮
num1=(EditText)findViewById(R.id.num1); num2=(EditText)findViewById(R.id.num2); plusbtn=(Button)findViewById(R.id.plusbtn);
findViewById的作用就是通过id的到控件,它的参数就是控件在R.java文件中生成的id索引。感觉类似于javascript中的getElementById…
然后给按钮绑定点击事件,这个应该在java中学过,我接触java不太多,不太清楚。plusbtn.setOnClickListener(),学过java的应该很容易看懂。
最后要说的一点就是后面的那个Toast。这是android中的一个提示,效果如下
,过一段时间后会自己消失,用来显示信息效果挺好。
最后运行程序,如下图
点击计算按钮后,注意划红线部分。
恩,此节到此完成。
至于理论部分,我这里不会写,程序中用到了会提。
编辑器太不给力了,每次发布完看的时候都有一部分代码显示不出来,还得改一遍...
最后附上本次生成的apk文件,不能传,改成了zip扩展名,Textview_EditText_Button.zip