Android入門(一),Android入門(

來源:互聯網
上載者:User

Android入門(一),Android入門(

原文連結:http://www.orlion.ga/387/

一、安卓的系統架構

    1、

 

    1. linux核心層,這一層為安卓裝置提供底層的驅動

    2. 系統運行庫層,這一層通過一些C/C++庫來為Android系統提供了主要的特性支援。如SQLite庫提供了資料庫支援,OpenGL|EL庫提供了3D繪圖的支援,Webkit庫提供了瀏覽器核心的支援。另外還有安卓執行階段程式庫,主要提供一些核心庫能夠允許開發人員使用java開發android應用。另外Android執行階段程式庫還包含了Dalvik虛擬機器,它使得每一個android應用都能運行在獨立的進程中,並擁有一個自己的Dalvik虛擬機器執行個體

    3. 應用程式框架層,這一層主要提供了構建App時可能用到的API

    4. 應用程式層,所有安裝在手機上的應用程式都屬於這一層

 

    Android提供了什麼:

    1. 四大組件,Android四大組件分別是活動Activity、服務Service、廣播接收器Broadcast Receiver和內容提供器Content Provider。其中Activity是所有Android應用程式的門面,凡是在應用中看到的東西都是放在Activity中的。Service一直在後台默默運行,即使使用者退出了應用,服務仍然是可以繼續啟動並執行。Broadcast Receiver可以允許應用程式接收各處的廣播訊息,如電話、簡訊等,當然自己的應用也可以向外發出廣播訊息。Content Provider則為應用程式之間共用資料提供了可能,比如想要讀取系統電話本中的連絡人,就需要通過內容提供器來實現。

    2. 豐富的系統控制項,Android系統為開發人員提供了豐富的系統控制項,使得我們可以很輕鬆地編寫出漂亮的介面。當然如果你品味比較高,不滿足於系統內建的控制項效果,也完全可以定製屬於自己的控制項。

    3. SQLite資料庫,Android系統還內建了這種輕量級、運算速度快的嵌入式關聯式資料庫,不僅支援標準SQL還可以通過Android封裝好的API進行操作

    4. 地理位置定位,Android基本都內建了GPS

    5. 強大的多媒體,Android提供了豐富的多媒體服務,如音樂、視頻、錄音、拍照、鬧鈴等,這些都可以在APP中通過代碼控制。

    6. 感應器,很多手機都內建了多種感應器,如方向感應器、加速度感應器

 

二、第一個Android項目HelloWorld

    1、建立一個安卓project

    File->new-> Android Application Project

    然後一路next。

    2、運行項目

    首先建立一個android模擬器,點擊eclipse工具列Android Virtual Device Manager

    然後項目右鍵run as->Android Application。

 

    3、項目目錄介紹:

        a.src:存放java代碼的地方

        b.gen:自動產生的內容,主要有一個R.java檔案,在項目中任何地方添加的任何資源都會在其中產生一個對應的資源id,不要修改該檔案

        c.assets:主要可以存放一些隨程式打包的檔案。另外如果在程式中用到了WebView載入本地網頁的功能,所有網頁相關的檔案也都放在這個目錄下

        d.bin:主要包含一些在編譯時間自動產生的檔案,其中會有一個當前項目編譯好的apk安裝包

        e.libs:如果項目中用到了第三方jar包,就要把jar包放到libs目錄下,放在這個目錄下的jar包都會被自動添加到構建路徑中

        f.res:項目中使用到的所有圖片、布局、字串等資源都放在這個目錄下,前面提到的R.java中的內容也是根據這個目錄下的檔案自動產生的。這個目錄下有很多子目錄,圖片放在drawable目錄下,布局放在layout目錄下,字串放在values目錄下

        g.AndroidMainfest.xml:這是整個項目的設定檔,在程式中定義的所有四大組件都需要在這個檔案中註冊。另外還可以在這個檔案中給App添加許可權聲明。也可以重新指定構建項目時指定的程式最低相容版本和目標版本。

        h.project.properties:這個檔案通過一行代碼指定了編譯器時所使用的SDK版本。

 

三、HelloWorld如何運行起來的

首先開啟AndroidMainfest.xml檔案可以找到如下代碼:

<activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>

這段代碼錶示對MainActivity這個activity註冊,沒有在AndroidMainfest.xml裡註冊的Activity是不能使用的。其中intent-filter裡的兩行代碼很重要,<action android:name="android.intent.action.MAIN"/>和<category android:name="android.intent.category.LAUNCHER"/>表示MainActivity是這個項目的主Activity,在手機上點擊應用表徵圖,首先啟動的就是這個Activity。

    那麼MainActivity有什麼用呢?Activity是Android應用程式的門面,凡是在應用中看到的東西都是放在Activity中的,因此程式啟動並執行介面就是MainActivity這個Activity。MainActivity.java代碼:

package ga.orlion.helloworld;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}

MainActivity是繼承自Activity,Activity是Android系統提供的一個基類,我們項目中所有的活動都必須要繼承它才能擁有Activity的特性,然後可以看到MainActivity中有三個方法,onCreateOptionsMenu()這個方法是用來建立菜單的,我們可以先無視它,主要看一下onCreate()方法,onCreate()方法是一個活動唄建立時必定要執行的方法。Android程式的設計講究邏輯與視圖分離,不推薦Activity中直接寫介面,通常是布局檔案中寫介面然後在Activity中引入進來。onCreate()方法第二行調用了setContentView()方法,就是這個方法給當前的Activity引入了一個activity_main布局。布局檔案都是定義在res/layout目錄下。開啟activity_main.xml:

<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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="ga.orlion.helloworld.MainActivity" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" /></RelativeLayout>

這裡需要說明的是我們在程式介面中看到的HelloWorld!字串不是在這個檔案中定義的而是單獨的在res/values/string.xml中定義的,

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">HelloWorld</string>    <string name="hello_world">Hello world!</string>    <string name="action_settings">Settings</string></resources>

在布局檔案activity_main.xml中通過"@string/hello_world"的方式引用的。

 

res目錄下,所有以drawable開頭的檔案夾都是存放圖片的,所有以values開頭的檔案夾都是放字串的,layout檔案夾是用來放布局檔案的,menu檔案夾是用來放菜單檔案的。這麼多drawable檔案夾是為了讓程式相容更多的裝置。在製作程式的時候最好能夠給一張圖片提供幾個不同解析度的副本,分別在這些檔案夾下,當程式啟動並執行時候根據當前裝置解析度的高低自動選擇載入哪個檔案夾下的檔案。如果只有一種解析度的圖片就放到drawable-hdpi檔案夾下就好了。

在代碼中通過R.string.hello_world可以獲得該字串的引用,在xml中通過@string/hello_world可以獲得該字串的引用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.