Cấu trúc của Android Project


Phần này sẽ giới thiệu về cấu trúc của một Android Project với ứng dụng đầu tiên: Hello Word!

1. Tạo Android Project:

Đầu tiên cần phải mở Eclipse IDE đã được Download trong bài trước. Sau đó trên thanh Menu vào File -> New -> Android Application Project. Điền các thông tin cần thiết trong cửa số mới.

Ở các cửa sổ tiếp theo bạn cứ nhấn next rồi sau cùng chọn Finish. Khi tạo Project thành công trong Eclipse của bạn sẽ xuất hiện:

2. Phân tích Android Project:

Trước khi chạy ứng dụng, bạn nên dành vài phút để tìm hiểu về các thư mục và các File bên trong HelloWord Project.

  • (1) src: Nơi chứa các file .java trong Project. Mặc định, nó sẽ chứ file MainActivity.java
  • (2) gen: Nơi chứa các file .R trong Project. Một tập tin được trình biên dịch tạo ra để tham chiếu đến các tài nguyên trong Project, chúng ta không nên thay đổi file này.
  • (3) bin: Nơi chứa file cài đặt .apk.
  • (4) res/drawable-hdpi: Đây là thư mục chứa các đối tương đồ họa.
  • (5) res/layout: Đây là thư mục chức các tập tin để xác định giao diện người dùng.
  • (6) values: Đây là thư mục chứa các file .xml khác nhau. Nó bao gồm tập hợp các tài nguyên như: string, colors, …
  • (7) AndroidManifest.xml: Đây là tập tin khai báo, dùng để mô tả các đặc trưng cơ bản của ứng dụng, và xác định mỗi thành phần của nó.

Phần tiếp theo sẽ đi vào chi tiết hơn một số file quan trọng trong Project.

3. MainActivity.java

Đây là code mặc định của file MainActivity.java

package com.example.helloword;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

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;
	}

}

  • R.layout.activity_main: trỏ đến file activity_main.xml được đặt trong thư mục res/layout.
  • Phương thức onCreate() là một trong số các phương thức để nạp một activity.

4. AndroidManifest.xml

Bất cứ thành phần nào được triển khai như một phần trong ứng dụng, phải được khai báo trong tập tin:  AndroidManifest.xml. File này giống như một interface giữa HĐH Android và ứng dụng của bạn. Vì vậy nếu thành phần nào bạn dùng mà không khai báo trong file này, thì HĐH sẽ không xem xét đến chúng.

Đây là code mặc định của AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.helloword"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.helloword.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>
    </application>

</manifest>
  • <application>…</application>: Thẻ bao quanh các thành phần có liên quan trong ứng dụng. Thuộc tính Android:icon: Sẽ trỏ đến các icon có sẵn trong thư mục res/drawable-hdpi. Ứng dụng này sẽ sử dụng hình ic_launcher là icon.
  • <activity>…</activity>: Thẻ này được sử dụng để nêu chi tiết về một activity. Thuộc tính android:name được sử dụng để mô tả chi tiết về tên class của một activity.  Thuộc tính android:label xác định một chuỗi ký tự được sử dụng là nhãn cho activity đó. Nếu trong ứng dụng của bạn có nhiều Activities thì bạn sẽ phải tạo nhiều thẻ <activity>.
  • <action />: với name android.intent.action.MAIN để cho Android biết rằng activity này sẽ được load lên đầu tiên khi chạy ứng dụng.
  • <category />: với name android.intent.category.LAUNCHER để cho Android biết ứng dụng có thể được chạy từ một Icon trên thiết bị.
  • @string: sẽ được chỉ định đến file strings.xml, @string/app_name sẽ được dẫn đến chuỗi app_name nó là HelloWord.

Sau đây là một số thẻ khác bạn có thể sử dụng trong file AndroidManifest.xml.

<activity> là thẻ dành cho các activities.

<service> là thẻ dành cho các services.

<receiver> là thẻ dành cho các broadcast receivers.

<provider> là thẻ dành cho các content providers.

5. strings.xml

Đây là file được đặt trong thư mục res/values chứa tất cả các text mà ứng dụng của bạn sử dụng. Ví dụ: tên của các buttons, các labels, các text mặc định bạn nên để trong file này.

Code mặc định của file strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">HelloWord</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>

</resources>

6. R.java

R.java tạo ra mối liên kết giữa các file activity và các file resource (VD: như giữa file MainActivity.java và file strings.xml). File này được tạo ra tự động và bạn không nên thay đổi nội dung trong file này.

Đây là một ví dụ về nội dung của file 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.helloword;

public final class R {
    public static final class attr {
    }
    public static final class dimen {
        /**  Default screen margins, per the Android Design guidelines. 

         Customize dimensions originally defined in res/values/dimens.xml (such as
         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.

         */
        public static final int activity_horizontal_margin=0x7f040000;
        public static final int activity_vertical_margin=0x7f040001;
    }
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
    }
    public static final class id {
        public static final int action_settings=0x7f080000;
    }
    public static final class layout {
        public static final int activity_main=0x7f030000;
    }
    public static final class menu {
        public static final int main=0x7f070000;
    }
    public static final class string {
        public static final int action_settings=0x7f050001;
        public static final int app_name=0x7f050000;
        public static final int hello_world=0x7f050002;
    }
    public static final class style {
        /**
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.

        Base application theme for API 11+. This theme completely replaces
        AppBaseTheme from res/values/styles.xml on API 11+ devices.

 API 11 theme customizations can go here. 

        Base application theme for API 14+. This theme completely replaces
        AppBaseTheme from BOTH res/values/styles.xml and
        res/values-v11/styles.xml on API 14+ devices.

 API 14 theme customizations can go here.
         */
        public static final int AppBaseTheme=0x7f060000;
        /**  Application theme.
 All customizations that are NOT specific to a particular API-level can go here.
         */
        public static final int AppTheme=0x7f060001;
    }
}

7. activity_main.xml

activity_main.xml là một file layout nằm trong thư mục res/layout. File này sẽ được tham chiếu bởi ứng dụng khi tạo ra giao diện trên màn hình. Bạn sẽ phải thay đổi nội dung file này rất nhiều trong khi tạo giao diện cho ứng dụng.

Đây code mặc định của file 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=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

  • RelativeLayout: là một trong số nhiều layout của Android.
  • TextView: là một trong nhiều thành phần của layout trong việc xây dựng giao diện. TextView có nhiều thuộc tính như android:layout_width=”wrap_content”, android:layout_height=”wrap_content”.

8. Run ứng dụng:

Bạn Chuột phải vào ứng dụng -> Run As -> Android Application

Hoặc

Bạn Chuột phải vào ứng dụng -> Run As -> Run Configurations -> Chọn AVD mà bạn thích

Kết quả thành công:

 

DOWNLOAD: Source code

 

 

Dựa trên: tutorialspoint

Leave a comment