右鍵layout目錄new->Android XML File,取名爲plus.xml,先使用最簡單的線性佈局(LinearLayout)javascript
而後加法須要2個輸入的框框和一個提交按鈕。html
View
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent" //佈局的寬度,match_parent表示充滿它的父控件,另外還有fill_parent和wrap_content(根據其內容改變寬度)
- android:layout_height="match_parent"
- android:orientation="vertical" > //佈局的方向,vertical:其內的控件垂直佈局,horizontal:水平佈局
- <EditText //第一個控件EditText:編輯文本框
- android:id="@+id/num1" // @+id/ + id 的格式是給控件指定一個id,這個id會在R.java自動生成,這樣就能夠在代碼裏按id找到這個控件了。
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ems="10" //設置Edittext的寬度爲10個字符的寬度
- android:inputType="number"> // 文本框輸入的類型,這裏選擇number就只能輸入數字了,其餘還有好多類型,能夠察看文檔
- <requestFocus /> //設置一個畫面初始的焦點,一個文件只能有一個這個標籤
- /*原文檔<requestFocus>Any element representing a object can include this empty element,which gives it's parent initial focus on the screen. You can have only one of these elements per file.*/
- </EditText>
- <EditText //第二個控件EditText
- android:id="@+id/num2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ems="10"
- android:inputType="number" >
- </EditText>
- <Button //第三個控件Button:按鈕
- android:id="@+id/bPlus" //指定按鈕的id
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center" //gravity是重力的意思,這裏就是對齊位置,layout_gravity是本控件相對父控件的對齊方式
- android:gravity="center" //這是本控件內容相對控件的對齊方式
- android:text="@string/plus" //這是控件的顯示內容,能夠直接寫字符串如:android:text="相加"
- //也能夠想這麼寫@string/plus,說明是引用了string.xml裏name爲plus的常量,推薦這麼寫,方便維護
- />
- </LinearLayout>
fill_parent,match_parent,wrap_content三者區別能夠看這裏。java
http://blog.sina.com.cn/s/blog_4ca9ceef0100zwc9.htmlandroid
下面看一下string.xmlapp
- <resources>
- <string name="app_name">Plus</string>
- <string name="plus">相加</string> //上面的Button引用後顯示的就是相加
- <string name="result">結果</string>
- </resources>
這裏的值也會在R.java中生成相應的id,因此也能夠在代碼中直接按R.string.+ name引用到。ide
這樣一個佈局文件就寫好了呢。佈局
而後還要建一個result.xml的佈局文件,這個文件很是簡單,就是顯示相加的結果。this
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <TextView //這是一個TextView,就像html一個label同樣
- android:id="@+id/tvResult"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:textIsSelectable="true"
- android:textSize="50sp"
- android:textColor="#FF0000"
- android:gravity="center_vertical|center_horizontal" //這樣寫說明內容水平方向居中和垂直方向也居中
- />
- </LinearLayout>
唉,放了一個很大的錯誤,xml的註釋不是這樣的,我是在這裏寫的,習慣了代碼的註釋spa
下面就寫第一個PlusActivity.java3d
- package learn.plus;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- public class PlusActivity extends Activity {
- // 定義2個EditText和一個Button控件
- private EditText text1, text2;
- private Button bPlus;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // 設置這個Activity的佈局,直接使用R.layout.plus就能夠設置了
- setContentView(R.layout.plus);
- // findViewById(id)這個id就是咱們在佈局文件裏控件的id,而後須要強轉成EditText
- // 這樣就能夠去到3個控件的對象了
- text1 = (EditText) findViewById(R.id.num1);
- text2 = (EditText) findViewById(R.id.num2);
- bPlus = (Button) findViewById(R.id.bPlus);
- /*
- * 這是給按鈕設置監聽onclick事件,和html中onclick=「function()」相似
- * BPlusClick()是一個內部類須要實現OnClickListener接口中的onClick(View v)方法。
- * 不過也能夠不定義這個內部類,能夠採用匿名內部類的方式 bPlus.setOnClickListener(new
- * OnClickListener() {
- *
- * @Override public void onClick(View v) {
- *
- * //do something
- *
- * } }); 這樣寫也是ok
- * 這樣就點擊按鈕的時候就會執行onClick方法了
- */
- bPlus.setOnClickListener(new BPlusClick());
- }
- class BPlusClick implements OnClickListener {
- @Override
- public void onClick(View v) {
- /*
- * new 一個Intent對象 源文檔:An intent is an abstract description of an
- * operation to be performed
- * Intent就像是一個裝滿數據的卡車,從一個地方運到另外一個地方,這些地方能夠是Activity,service或者其餘程序等等。
- */
- Intent toResult = new Intent();
- // 取得2個文本的值,至關於javascript中的document.getElementById('id').value
- String str1 = text1.getText().toString();
- String str2 = text2.getText().toString();
- if ((!"".equals(str1)) && (!"".equals(str2))) {
- // Intent的方法,如今把它理解成是一個Map就行了,Map.put(key,value);
- toResult.putExtra("num1", str1);
- toResult.putExtra("num2", str2);
- // 而後將2個Activity關聯起來,PlusActivity.this表示當前Activity對象,和ResultActivity.class參數
- toResult.setClass(PlusActivity.this, ResultActivity.class);
- // 最後使用當前Activity對象的startActivity(Intent
- // intent)方法打開ResultActivity
- PlusActivity.this.startActivity(toResult);
- }
- }
- }
- }
下面是ResultActivity.java
- package learn.plus;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.widget.TextView;
- public class ResultActivity extends Activity {
- // 定義一個TextView
- private TextView tv;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // 設置佈局
- setContentView(R.layout.result);
- // getIntent()獲得傳過來的Intent對象
- Intent fromPlusIntent = getIntent();
- tv = (TextView) findViewById(R.id.tvResult);
- // 根據key獲得其中的value
- String num1Str = fromPlusIntent.getStringExtra("num1");
- String num2Str = fromPlusIntent.getStringExtra("num2");
- String resultStr = "error";
- try {
- // parseInt出錯的話就直接顯示error
- int num1 = Integer.parseInt(num1Str);
- int num2 = Integer.parseInt(num2Str);
- resultStr = num1 + num2 + "";
- } catch (Exception e) {
- } finally {
- tv.setText(resultStr);
- }
- }
- }
還有最重要的一步,就是要在AndroidManifest.xml中配置這2個Activity,要使用到Activity都須要在這個xml中配置過。
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="learn.plus"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="11"
- android:targetSdkVersion="17" />
- <!-- activity 配置在<application>內 -->
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <!-- PlusActivity -->
- <activity
- android:name="learn.plus.PlusActivity"
- android:label="@string/app_name" >
- <!-- android:name 完整類名 -->
- <!-- android:label 此Activity運行時顯示的title -->
- <!-- 在<intent-filter>中加入下面的配置,說明這個Activity是程序運行開始的界面,至關於歡迎界面 -->
- <intent-filter>
- <action android:name="android.intent.action.MAIN" >
- </action>
- <category android:name="android.intent.category.LAUNCHER" >
- </category>
- </intent-filter>
- </activity>
- <!-- ResultActivity -->
- <activity
- android:name="learn.plus.ResultActivity"
- android:label="@string/result" >
- </activity>
- </application>
- </manifest>
好了運行一下吧。
困死了睡覺