Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android入門(一),Android入門(

Android入門(一),Android入門(

編輯:關於android開發

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 {

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

	@Override
	public 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;
	}

	@Override
	public 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可以獲得該字符串的引用

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved