上一節寫到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