Android Hello World 實(shí)例

2021-10-21 11:38 更新

Android Hello World 實(shí)例

讓我們開(kāi)始真正的基于Android框架編程。在開(kāi)始使用Android SDK寫(xiě)第一個(gè)示例之前,請(qǐng)確保你已經(jīng)按照Android - 環(huán)境搭建 教程中介紹的完成了你的Android開(kāi)發(fā)環(huán)境搭建。同時(shí),我假設(shè)你具備一些Eclipse IDE的知識(shí)。

現(xiàn)在讓我們開(kāi)始寫(xiě)一個(gè)簡(jiǎn)單的Android應(yīng)用程序,可以打印出"Hello World"。

創(chuàng)建 Android 應(yīng)用

第一步是通過(guò)Eclipse IDE來(lái)創(chuàng)建一個(gè)簡(jiǎn)單地Android應(yīng)用程序。按照選項(xiàng)File -> New -> Project,最后從向?qū)Я斜磉x擇 Android New Application ?,F(xiàn)在,使用如下的窗口向?qū)?yīng)用程序命名為HelloWorld:

圖片

接下來(lái),按照所提供的說(shuō)明,保持所有的默認(rèn)輸入,直到最后一步。一旦項(xiàng)目創(chuàng)建成功,將會(huì)看到如下的項(xiàng)目界面 -

圖片


Android應(yīng)用程序剖析

在運(yùn)行應(yīng)用之前,你需要知道Android項(xiàng)目中的一些文件目錄和文件 -

Hello World示例

序號(hào)文件夾、文件和說(shuō)明
1src:包含項(xiàng)目中所有的.java源文件,默認(rèn)情況下,它包括一個(gè) MainActivity.java源文件對(duì)應(yīng)的活動(dòng)類(lèi),當(dāng)應(yīng)用程序通過(guò)應(yīng)用圖標(biāo)啟動(dòng)時(shí),將運(yùn)行它。
2gen:這包含由編譯器生成的.R文件,引用了所有項(xiàng)目中的資源。該文件不能被修改。
3bin:這個(gè)文件夾包含Android由APT構(gòu)建的.apk包文件,以及運(yùn)行Android應(yīng)用程序所需要的其他所有東西。
4res/drawable-hdpi:這個(gè)目錄下包括所有的為高密度屏幕設(shè)計(jì)所需的drawable對(duì)象。
5res/layout:這個(gè)目錄存放由于定義用戶(hù)界面的文件。
6res/values:這個(gè)目錄存放各種各樣的包含一系列資源的XML文件,比如字符串和顏色的定義。
7AndroidManifest.xml:這個(gè)是應(yīng)用程序的清單文件,描述了應(yīng)用程序的基礎(chǔ)特性,定義它的各種組件。

下面的章節(jié)將給出一些重要的應(yīng)用程序文件的概覽。


主要活動(dòng)文件

主要活動(dòng)代碼在MainActivity.java的Java文件中。這是實(shí)際的應(yīng)用程序文件,將被轉(zhuǎn)化為Dalvik可執(zhí)行文件并運(yùn)行。下面是由應(yīng)用向?qū)镠ello World應(yīng)用生成的默認(rèn)代碼 -

package com.example.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.activity_main, menu);
      return true;
   }
}

這里,R.layout.activity_main引用自res/layout目錄下的activity_main.xml文件。onCreate()是活動(dòng)被加載之后眾多被調(diào)用的方法之一。


Manifest文件

無(wú)論你開(kāi)發(fā)什么組件用作應(yīng)用程序中的一部分,都需要在應(yīng)用程序項(xiàng)目根目錄下的manifest.xml文件中聲明所有的組件。這個(gè)文件是Android操作系統(tǒng)與你的應(yīng)用程序之間的接口,因此,如果沒(méi)有在這個(gè)文件中聲明你的組件,將無(wú)法被操作系統(tǒng)所識(shí)別。舉個(gè)例子,一個(gè)默認(rèn)的清單文件看起來(lái)如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.helloworld"
   android:versionCode="1"
   android:versionName="1.0" >

   <uses-sdk
      android:minSdkVersion="8"
      android:targetSdkVersion="22" />

   <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >

       <activity
          android:name=".MainActivity"
          android:label="@string/title_activity_main" >

          <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER"/>
          </intent-filter>

       </activity>

   </application>
</manifest>

這里,...標(biāo)簽之間是應(yīng)用程序相關(guān)的組件。andnroid:icon屬性指出位于res/drawable-hdpi下面的應(yīng)用程序圖標(biāo)。這個(gè)應(yīng)用使用drawable文件夾下名為ic_launcher.png的圖片。

標(biāo)簽用于指定一個(gè)活動(dòng),android:name屬性指定一個(gè)Activity類(lèi)子類(lèi)的全名。android:label屬性指定用于活動(dòng)名稱(chēng)的字符串??梢允褂脴?biāo)簽來(lái)指定多個(gè)活動(dòng)。

意圖過(guò)濾器的action被命名為android.intent.action.MAIN,表明這個(gè)活動(dòng)被用做應(yīng)用程序的入口。意圖過(guò)濾器的category被命名為android.intent.category.LAUNCHER,表明應(yīng)用程序可以通過(guò)設(shè)備啟動(dòng)器的圖標(biāo)來(lái)啟動(dòng)。

@tring指的是strings.xml(將在后面介紹)。因此,@string/app_name指的是定義在strings.xml中的app_name,實(shí)際為"Hello World"。類(lèi)似的,應(yīng)用中的其他字符串也很流行。

下面是你的清單文件中將用到的標(biāo)簽,用于指定不同的Android應(yīng)用程序組件:

  • 活動(dòng)元素
  • 服務(wù)元素
  • 廣播接收器元素
  • 內(nèi)容提供者元素

Strings 文件

strings.xml文件在res/value文件夾下,它包含應(yīng)用程序使用到的所有文本。例如,按鈕、標(biāo)簽的名稱(chēng),默認(rèn)文本,以及其他相似的strings。這個(gè)文件為他們的文本內(nèi)容負(fù)責(zé)。一個(gè)默認(rèn)的strings文件看起來(lái)如下:

<resources>
   <string name="app_name">HelloWorld</string>
   <string name="hello_world">Hello world!</string>
   <string name="menu_settings">Settings</string>
   <string name="title_activity_main">MainActivity</string>
</resources>

R 文件

gen/com.example.helloworld/R.java文件是活動(dòng)的Java文件(如MainActivity.java)和資源(如strings.xml)之間的膠水。這是一個(gè)自動(dòng)生成的文件,不要修改R.java文件的內(nèi)容。下面是一個(gè)R.java文件的示例:

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

package com.example.helloworld;

public final class R {
   public static final class attr {
   }

   public static final class dimen {
      public static final int padding_large=0x7f040002;
      public static final int padding_medium=0x7f040001;
      public static final int padding_small=0x7f040000;
   }

   public static final class drawable {
      public static final int ic_action_search=0x7f020000;
      public static final int ic_launcher=0x7f020001;
   }

   public static final class id {
      public static final int menu_settings=0x7f080000;
   }

   public static final class layout {
      public static final int activity_main=0x7f030000;
   }

   public static final class menu {
      public static final int activity_main=0x7f070000;
   }

   public static final class string {
      public static final int app_name=0x7f050000;
      public static final int hello_world=0x7f050001;
      public static final int menu_settings=0x7f050002;
      public static final int title_activity_main=0x7f050003;
   }

   public static final class style {
      public static final int AppTheme=0x7f060000;
   }
}

Layout 文件

activity_main.xml是一個(gè)在res/layout目錄下的layout文件。當(dāng)應(yīng)用程序構(gòu)建它的界面時(shí)被引用。你將非常頻繁的修改這個(gè)文件來(lái)改變應(yīng)用程序的布局。在"Hello World"應(yīng)用程序中,這個(gè)文件具有默認(rèn)的布局,內(nèi)容如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >

   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_centerVertical="true"
      android:padding="@dimen/padding_medium"
      android:text="@string/hello_world"
      tools:context=".MainActivity" />

</RelativeLayout>

這是一個(gè)簡(jiǎn)單的RelativeLayout的示例,更多內(nèi)容會(huì)在獨(dú)立的章節(jié)中講解。TextView是一個(gè)Android的控件用于構(gòu)建用戶(hù)圖形界面。它包含有許多不同的屬性,諸如android:layout_width, android:layout_height等用來(lái)設(shè)置它的寬度和高度等。@string指的是res/values文件夾下的strings.xml文件。因此,@string/hello_world指的是定義在strings.xml中的名為hello的字符串:"Hello World!"。

運(yùn)行應(yīng)用程序

讓我們嘗試運(yùn)行剛剛建立的Hello World!應(yīng)用程序。假設(shè)在搭建環(huán)境時(shí)你已經(jīng)創(chuàng)建好了AVD。從Eclipse運(yùn)行應(yīng)用,打開(kāi)你項(xiàng)目中的一個(gè)活動(dòng)文件,并且點(diǎn)擊工具欄上的圖片圖標(biāo)。Eclipse在AVD上安裝應(yīng)用,并啟動(dòng)它。如果一切順利,將顯示如下的模擬器窗口 -

圖片

恭喜你已經(jīng)開(kāi)發(fā)了第一個(gè)Android應(yīng)用程序,按照接下來(lái)剩余的教程一步一步來(lái),你將成為一個(gè)牛B的Android開(kāi)發(fā)人員。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)