android實現一個簡單的加法功能

右鍵layout目錄new->Android XML File,取名爲plus.xml,先使用最簡單的線性佈局(LinearLayout)javascript

而後加法須要2個輸入的框框和一個提交按鈕。html

  
  
           
  
  
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" //佈局的寬度,match_parent表示充滿它的父控件,另外還有fill_parent和wrap_content(根據其內容改變寬度)
  4.     android:layout_height="match_parent" 
  5.     android:orientation="vertical" > //佈局的方向,vertical:其內的控件垂直佈局,horizontal:水平佈局
  6.  
  7.     <EditText //第一個控件EditText:編輯文本框
  8.         android:id="@+id/num1" // @+id/ + id 的格式是給控件指定一個id,這個id會在R.java自動生成,這樣就能夠在代碼裏按id找到這個控件了。
  9.         android:layout_width="match_parent" 
  10.         android:layout_height="wrap_content" 
  11.         android:ems="10" //設置Edittext的寬度爲10個字符的寬度
  12.         android:inputType="number"> // 文本框輸入的類型,這裏選擇number就只能輸入數字了,其餘還有好多類型,能夠察看文檔
  13.         <requestFocus /> //設置一個畫面初始的焦點,一個文件只能有一個這個標籤
  14. /*原文檔<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.*/
  15.     </EditText> 
  16.  
  17.      <EditText //第二個控件EditText
  18.         android:id="@+id/num2" 
  19.         android:layout_width="match_parent" 
  20.         android:layout_height="wrap_content" 
  21.         android:ems="10" 
  22.         android:inputType="number" > 
  23.     </EditText> 
  24.     <Button  //第三個控件Button:按鈕
  25.         android:id="@+id/bPlus" //指定按鈕的id
  26.         android:layout_width="match_parent" 
  27.         android:layout_height="wrap_content" 
  28.         android:layout_gravity="center" //gravity是重力的意思,這裏就是對齊位置,layout_gravity是本控件相對父控件的對齊方式
  29. android:gravity="center" //這是本控件內容相對控件的對齊方式
  30.         android:text="@string/plus" //這是控件的顯示內容,能夠直接寫字符串如:android:text="相加"
  31. //也能夠想這麼寫@string/plus,說明是引用了string.xml裏name爲plus的常量,推薦這麼寫,方便維護
  32.         /> 
  33.      
  34. </LinearLayout> 
View

fill_parent,match_parent,wrap_content三者區別能夠看這裏。java

http://blog.sina.com.cn/s/blog_4ca9ceef0100zwc9.htmlandroid

下面看一下string.xmlapp

  
  
           
  
  
  1. <resources> 
  2.     <string name="app_name">Plus</string> 
  3.     <string name="plus">相加</string> //上面的Button引用後顯示的就是相加
  4.     <string name="result">結果</string> 
  5. </resources> 

這裏的值也會在R.java中生成相應的id,因此也能夠在代碼中直接按R.string.+ name引用到。ide

這樣一個佈局文件就寫好了呢。佈局

而後還要建一個result.xml的佈局文件,這個文件很是簡單,就是顯示相加的結果。this

  
  
           
  
  
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     android:orientation="vertical" > 
  6.     <TextView  //這是一個TextView,就像html一個label同樣
  7.         android:id="@+id/tvResult" 
  8.         android:layout_width="match_parent" 
  9.         android:layout_height="match_parent" 
  10.         android:textIsSelectable="true" 
  11.         android:textSize="50sp" 
  12.         android:textColor="#FF0000" 
  13.         android:gravity="center_vertical|center_horizontal" //這樣寫說明內容水平方向居中和垂直方向也居中
  14.         /> 
  15.  
  16. </LinearLayout> 

唉,放了一個很大的錯誤,xml的註釋不是這樣的,我是在這裏寫的,習慣了代碼的註釋spa

下面就寫第一個PlusActivity.java3d

  
  
           
  
  
  1. package learn.plus; 
  2.  
  3. import android.app.Activity; 
  4. import android.content.Intent; 
  5. import android.os.Bundle; 
  6. import android.view.View; 
  7. import android.view.View.OnClickListener; 
  8. import android.widget.Button; 
  9. import android.widget.EditText; 
  10.  
  11. public class PlusActivity extends Activity { 
  12.  
  13.     // 定義2個EditText和一個Button控件 
  14.     private EditText text1, text2; 
  15.     private Button bPlus; 
  16.  
  17.     @Override 
  18.     protected void onCreate(Bundle savedInstanceState) { 
  19.         super.onCreate(savedInstanceState); 
  20.         // 設置這個Activity的佈局,直接使用R.layout.plus就能夠設置了 
  21.         setContentView(R.layout.plus); 
  22.         // findViewById(id)這個id就是咱們在佈局文件裏控件的id,而後須要強轉成EditText 
  23.         // 這樣就能夠去到3個控件的對象了 
  24.         text1 = (EditText) findViewById(R.id.num1); 
  25.         text2 = (EditText) findViewById(R.id.num2); 
  26.         bPlus = (Button) findViewById(R.id.bPlus); 
  27.         /* 
  28.          * 這是給按鈕設置監聽onclick事件,和html中onclick=「function()」相似 
  29.          * BPlusClick()是一個內部類須要實現OnClickListener接口中的onClick(View v)方法。 
  30.          * 不過也能夠不定義這個內部類,能夠採用匿名內部類的方式 bPlus.setOnClickListener(new 
  31.          * OnClickListener() { 
  32.          *  
  33.          * @Override public void onClick(View v) { 
  34.          *  
  35.          * //do something 
  36.          *  
  37.          * } }); 這樣寫也是ok 
  38. * 這樣就點擊按鈕的時候就會執行onClick方法了
  39.          */ 
  40.         bPlus.setOnClickListener(new BPlusClick()); 
  41.     } 
  42.  
  43.     class BPlusClick implements OnClickListener { 
  44.  
  45.         @Override 
  46.         public void onClick(View v) { 
  47.             /* 
  48.              * new 一個Intent對象 源文檔:An intent is an abstract description of an 
  49.              * operation to be performed 
  50.              * Intent就像是一個裝滿數據的卡車,從一個地方運到另外一個地方,這些地方能夠是Activity,service或者其餘程序等等。 
  51.              */ 
  52.             Intent toResult = new Intent(); 
  53.             // 取得2個文本的值,至關於javascript中的document.getElementById('id').value 
  54.             String str1 = text1.getText().toString(); 
  55.             String str2 = text2.getText().toString(); 
  56.  
  57.             if ((!"".equals(str1)) && (!"".equals(str2))) { 
  58.  
  59.                 // Intent的方法,如今把它理解成是一個Map就行了,Map.put(key,value); 
  60.                 toResult.putExtra("num1", str1); 
  61.                 toResult.putExtra("num2", str2); 
  62.  
  63.                 // 而後將2個Activity關聯起來,PlusActivity.this表示當前Activity對象,和ResultActivity.class參數 
  64.                 toResult.setClass(PlusActivity.this, ResultActivity.class); 
  65.  
  66.                 // 最後使用當前Activity對象的startActivity(Intent 
  67.                 // intent)方法打開ResultActivity 
  68.                 PlusActivity.this.startActivity(toResult); 
  69.             } 
  70.         } 
  71.  
  72.     } 

感受挺清晰了呢。

下面是ResultActivity.java

  
  
           
  
  
  1. package learn.plus; 
  2.  
  3. import android.app.Activity; 
  4. import android.content.Intent; 
  5. import android.os.Bundle; 
  6. import android.widget.TextView; 
  7.  
  8. public class ResultActivity extends Activity { 
  9.     // 定義一個TextView 
  10.     private TextView tv; 
  11.  
  12.     @Override 
  13.     protected void onCreate(Bundle savedInstanceState) { 
  14.         super.onCreate(savedInstanceState); 
  15.         // 設置佈局 
  16.         setContentView(R.layout.result); 
  17.  
  18.         // getIntent()獲得傳過來的Intent對象 
  19.         Intent fromPlusIntent = getIntent(); 
  20.  
  21.         tv = (TextView) findViewById(R.id.tvResult); 
  22.         // 根據key獲得其中的value 
  23.         String num1Str = fromPlusIntent.getStringExtra("num1"); 
  24.         String num2Str = fromPlusIntent.getStringExtra("num2"); 
  25.         String resultStr = "error"
  26.         try { 
  27.             // parseInt出錯的話就直接顯示error 
  28.             int num1 = Integer.parseInt(num1Str); 
  29.             int num2 = Integer.parseInt(num2Str); 
  30.             resultStr = num1 + num2 + ""
  31.         } catch (Exception e) { 
  32.         } finally { 
  33.             tv.setText(resultStr); 
  34.         } 
  35.     } 

還有最重要的一步,就是要在AndroidManifest.xml中配置這2個Activity,要使用到Activity都須要在這個xml中配置過。

  
  
           
  
  
  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     package="learn.plus" 
  3.     android:versionCode="1" 
  4.     android:versionName="1.0" > 
  5.  
  6.     <uses-sdk 
  7.         android:minSdkVersion="11" 
  8.         android:targetSdkVersion="17" /> 
  9.  
  10.     <!-- activity 配置在<application>內 --> 
  11.     <application 
  12.         android:allowBackup="true" 
  13.         android:icon="@drawable/ic_launcher" 
  14.         android:label="@string/app_name" 
  15.         android:theme="@style/AppTheme" > 
  16.  
  17.         <!-- PlusActivity --> 
  18.         <activity 
  19.             android:name="learn.plus.PlusActivity" 
  20.             android:label="@string/app_name" > 
  21.  
  22.             <!-- android:name 完整類名 --> 
  23.             <!-- android:label  此Activity運行時顯示的title --> 
  24.             <!-- 在<intent-filter>中加入下面的配置,說明這個Activity是程序運行開始的界面,至關於歡迎界面 --> 
  25.             <intent-filter> 
  26.                 <action android:name="android.intent.action.MAIN" > 
  27.                 </action> 
  28.  
  29.                 <category android:name="android.intent.category.LAUNCHER" > 
  30.                 </category> 
  31.             </intent-filter> 
  32.         </activity> 
  33.         <!-- ResultActivity --> 
  34.         <activity 
  35.             android:name="learn.plus.ResultActivity" 
  36.             android:label="@string/result" > 
  37.         </activity> 
  38.     </application> 
  39.  
  40. </manifest> 

好了運行一下吧。

困死了睡覺

相關文章
相關標籤/搜索