Tuesday, 22 November 2011

Android tutorial - Hello, World

Mình nhớ bài đầu tiên trong lập trình C++  là :
  cout<< "hello wold";
Trước khi bắt đầu với Android Developer  thì cái này cũng khá hay . Đó là cài đặt inviroment  hay Android SDK

Thiết lập môi trường

Để chạy được ứng dụng Hello World, bạn cần tối thiểu SDK, nếu không có bạn có thể làm các bước sau, nhưng nhớ là Eclipse là IDE chính để lập trình :
   1. Cài đặt Android SDK và AVD Manager ( Android Virtual Device) . Chọn gói Available Packages bên trái panel. 
   2. Bên phải panel bạn nên expand  Android Repository để lựa chọn những thàn phần cần thiết cho việc cài đặt. 
   3. Lựa chọn platform cần thiết cho cài đặt và click Install Selected. Khi bạn không chắc chắn cho platform nào thì hãy chọn lasted version.



Tạo AVD (Android Virtual Device)




 tạo  AVD:

  1. In Eclipse, select Window > Android SDK and AVD Manager.
  2. Select Virtual Devices in the left panel.
  3. Click New.... The Create New AVD dialog appears.
  4. Type the name of the AVD, such as "my_avd".
  5. Choose a target. The target is the platform (that is, the version of the Android SDK, such as 2.3.3) you want to run on the emulator. For this tutorial, choose the latest platform that you have installed and ignore the rest of the fields.
  6. Click Create AVD.

Tạo Android Project

  Sau khi tạo AVD ,giờ đên bước tạo và bắt đầu sử dụng Android project trong Eclipse.

  1. Trong Eclipse , Lựa chọn File > New > Project . Nhưng thường thì chúng ta có thể import Project , bạn dự định làm trên version thì select thôi
  2. Điền đầy đủ thông tin :
    • Project name: HelloAndroid
    • Build Target: Select a platform version that is equal to or lower than the target you chose for your AVD.
    • Application name: Hello, Android
    • Package name: com.example.helloandroid (or your own private namespace)
    • Create Activity: HelloAndroid
    Click Finish.
     
  3. Phần miêu tả cho Project(cái này có thẻ các bạn đọc hay không  cũng đươc, do các bạn làm quen với các loại project thì việc này chẳng cần nhìn ):
    Project NameThis is the Eclipse project name — the name of the directory that contains the project files.Build TargetThis is the version of the Android SDK that you're using to build your application. For example, if you choose Android 2.1, your application will be compiled against the Android 2.1 platform library. The target you choose here does not have to match the target you chose for your AVD; however, the target must be equal to or lower than the target you chose for your AVD. Android applications are forward-compatible, which means an application will run on the platform against which it is built as well as all platforms that are released in the future. For example, an application that is built against the 2.1 platform library will run normally on an AVD or device that is running the 2.3.3. The reverse is not true.Application NameThis is the human-readable title for your application — the name that appears on the Android device.Package NameThis is the package namespace (following the same rules as for packages in the Java programming language) that you want all your source code to reside under. This also sets the package name under which the stub Activity is generated. Your package name must be unique across all packages installed on the Android system; for this reason, it's important to use a standard domain-style package for your applications. The example above uses the "com.example" namespace, which is a namespace reserved for example documentation — when you develop your own applications, you should use a namespace that's appropriate to your organization or entity.Create ActivityThis is the name for the class stub that is generated by the plugin. This is a subclass of Android's Activity class. An Activity is simply a class that can run and do work. It can create a UI if it chooses, but it doesn't need to. As the checkbox suggests, this is optional, but an Activity is almost always used as the basis for an application.Min SDK VersionThis value specifies the minimum API Level on which your application will run. The Min SDK Version should be the same as the Build Target you chose. For example, if the Build Target is Android 2.1, then the Min SDK Version should be 7 or lower (it can never be higher than 7). For more information, see Android API Levels.
    1. Other fields
    2. : The checkbox for "Use default location" allows you to change the location on disk where the project's files are generated and stored.
Mở HelloAndroid.java ,trong thư mục HelloAndroid > src > com.example.helloandroid) :

package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Chú ý rằng các lớp đều dựa trên lớp Activity. Một activity là một thực thể ứng dụng được sử dụng thể hiện một hành động. Một ứng dụng có thể  nhiều hoạt động riêng biệt, nhưng người sử dụng tương tác với họ một tại một thời điểm.Phương thức onCreate ()  được gọi bởi hệ thống Android khi Activity của bạn bắt đầu - đó là nơi bạn nên thực hiện tất cả các khởi tạo và cài đặt giao diện người dùng. Một hoạt động không cần thiết phải có một giao diện , như thường làm thôi.
Bây giờ chúng ta hãy sửa đổi một số mã!


3 Construct the UI


Hãy nhìn vào  sửa đổi dưới đây  sau đó thực hiện các thay đổi giống nhau đến lớp  HelloAndroid của bạn. Các item tô đậm là những đường đã được thêm vào.

package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("Hello, Android");
       setContentView(tv);
   }
}

Tip: An easy way to add import packages to your project is to press Ctrl-Shift-O (Cmd-Shift-O, on Mac). This is an Eclipse shortcut that identifies missing packages based on your code and adds them for you. You may have to expand the import statements in your code for this to work.
An Android user interface is composed of hierarchies of objects called Views. A View is a drawable object used as an element in your UI layout, such as a button, image, or (in this case) a text label. Each of these objects is a subclass of the View class and the subclass that handles text is TextView.
In this change, you create a TextView with the class constructor, which accepts an Android Context instance as its parameter. A Context is a handle to the system; it provides services like resolving resources, obtaining access to databases and preferences, and so on. The Activity class inherits from Context, and because your HelloAndroid class is a subclass of Activity, it is also a Context. So, you can pass this as your Context reference to the TextView.
Next, you define the text content with setText().
Finally, you pass the TextView to setContentView() in order to display it as the content for the Activity UI. If your Activity doesn't call this method, then no UI is present and the system will display a blank screen.
There it is — "Hello, World" in Android! The next step, of course, is to see it running.

Run the Application



  1. Chọn  Run > Run.
  2. Và chọn "Android Application".


Để tìm hiểu thêm về việc tạo và chỉnh sửa cấu hình chạy trong Eclipse, hãy tham khảo Developing In Eclipse, with ADT.
Các plugin Eclipse sẽ tự động tạo ra một cấu hình chạy mới cho dự án của bạn và sau đó khởi chạy Android Emulator. Tùy thuộc vào môi trường của bạn, giả lậpAndroid có thể mất vài phút để khởi động đầy đủ,  vậy hãy kiên nhẫn. Khi giả lậpđược khởi động, các plugin Eclipse cài đặt ứng dụng của bạn  khởi động Hoạt động mặc định. Bây giờ bạn sẽ thấy một cái  đó như thế này:

"Hello, Android" bạn nhìn thấy trong thanh màu xám thực sự là tiêu đề ứng dụng.Các plugin Eclipse tạo ra tự động (chuỗi được định nghĩa trong res/values/strings.xml  được tham chiếu bởi tập tin AndroidManifest.xml của bạn).Các văn bản dưới tiêu đề  văn bản thực tế mà bạn đã tạo ra trong đối tượng TextView.

Đó là kết luận cơ bản "Hello World" hướng dẫn, nhưng bạn nên tiếp tục đọc một số thông tin có giá trị hơn về việc phát triển các ứng dụng Android.


4 Upgrade the UI to an XML Layout

Tại sao lại phải dùng XML layout vì nếu các bạn lập trình UI rồi bạn sẽ thấy điều này, trước mình cũng viết Desktop Application bằng Java, nhưng điều khó khăn là rối rém, có cái button script ngồi cả tối, rồi thầy yêu cầu khác cái là lại vỡ alo.

Đó là lý do tại sao Android cung cấp một mô hình giao diện người dùng xây dựng công cụ thay thế: các tập tin dựa trên XML bố trí. Cách dễ nhất để giải thích khái niệm này là để hiển thị một ví dụ. Dưới đây là một tập tin XML layout đó là giống hệt nhau trong mọi Activity:




<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/textview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:text="@string/hello"/>

Nếu học XML rồi thì nhìn cái kia dễ hiểu mà, còn đơn giản nó là một tree, ok, đây là chú thích, mình không giải thích thêm, nhìn tên là biết mà

Thuộc tính Ý nghĩa
xmlns:android This is an XML namespace declaration that tells the Android tools that you are going to refer to common attributes defined in the Android namespace. The outermost tag in every Android layout file must have this attribute.
android:id This attribute assigns a unique identifier to the TextView element. You can use the assigned ID to reference this View from your source code or from other XML resource declarations.
android:layout_width This attribute defines how much of the available width on the screen this View should consume. In this case, it's the only View so you want it to take up the entire screen, which is what a value of "fill_parent" means.
android:layout_height This is just like android:layout_width, except that it refers to available screen height.
android:text This sets the text that the TextView should display. In this example, you use a string resource instead of a hard-coded string value. The hello string is defined in the res/values/strings.xml file. This is the recommended practice for inserting strings to your application, because it makes the localization of your application to other languages graceful, without need to hard-code changes to the layout file. For more information, see Resources and Internationalization.
These XML layout files belong in the res/layout/ directory of your project. The "res" is short for "resources" and the directory contains all the non-code assets that your application requires. In addition to layout files, resources also include assets such as images, sounds, and localized strings.


Những tập tin XML Layout thuộc về thư mục res/layout/  của dự án. "Res" là viết tắt cho "resources" và thư mục có chứa tất cả các tài sản phi  ứng dụng của bạn yêu cầu. Ngoài ra các tập tin layoutresources cũng bao gồm hình ảnh, âm thanh, và các chuỗi .



The Eclipse plugin automatically creates one of these layout files for you: main.xml. In the "Hello World" application you just completed, this file was ignored and you created a layout programmatically. This was meant to teach you more about the Android framework, but you should almost always define your layout in an XML file instead of in your code. The following procedures will instruct you how to change your existing application to use an XML layout.




Khi bạn muốn có một thiết kế khác nhau , tập tin Layout XML của bạn bên trong  /res/layout-land.  Android sẽ tự động tìm ở đây khi những thay đổi bố trí.Nếu không có landscape  đặc biệt được xác định này , Android sẽ kéo dài cách bố trí mặc định.
Các plugin Eclipse sẽ tự động tạo ra một trong những tập tin layout cho bạn:main.xml. Trong "Hello World" mà bạn vừa hoàn thành, tập tin này đã được bỏ qua và tạo ra layout . Điều này có nghĩa là để dạy cho bạn thêm về framework Android, nhưng bạn nên luôn luôn xác định bố trí của bạn trong một tập tin XML thay vì trong mã của bạn. Các thủ tục sau đây sẽ hướng dẫn bạn làm thế nào để thay đổi ứng dụng hiện tại của bạn để sử dụng một bố trí XML.

  1. Trong Eclipse gói Explorer, mở rộng /res/layout  mở main.xml  (một khi đã mở, bạn có thể cần nhấp vào thẻ "main.xml" ở dưới cùng của cửa sổ để xemnguồn XML). Thay thế các nội dung với XML sau:
  2. <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/textview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:text="@string/hello"/>
    Lưu lại 
  3. Nếu sử dụng Eclipse, sau đo ADT sẽ bắt đầu với 2 chuỗi, hello và app_name. Và chuỗi sửa đổi sẽ như thế này
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="hello">Hello, Android! I am a string resource!</string>
        <string name="app_name">Hello, Android</string>
    </resources>
  4. Thay đổi lớp HelloAndroid và dùng XML . Thay đổi giống như sau:
    package com.example.helloandroid;
    import android.app.Activity;
    import android.os.Bundle;
    public class HelloAndroid extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    }
      Khi bạn thay đổi điều gì, tôi khuyên bạn nên code bằng tay, khi bạn code, tool sẽ suggest cho bạn, khi gõ R sẽ có rất nhiều suggest,thế mới gọi là tool, hãy xem gợi ý tốt nhất mà bạn muốn dùng.
Chạy thì chạy Run > Run History > Android Activity.

Lưu ý: Bạn có thể phải mở khóa màn hình giả lập để xem ứng dụng của bạn ,cũng giống như bạn mở khóa màn hình trên thiết bị. Nếu bạn có vấn đề chạy các giả lập, xem Sử dụng Android Emulator.
Tiếp tục đọc cho một giới thiệu để gỡ lỗi và các thông tin nhiều hơn một chút về việc sử dụng các IDE khác. Khi bạn đã sẵn sàng để tìm hiểu thêm, đọc cơ bản ápdụng cho một giới thiệu cho tất cả các yếu tố đó làm cho các ứng dụng Androidlàm việc. Đồng thời tham khảo trang giới thiệu hướng dẫn của Nhà phát triển cho một cái nhìn tổng quan về các tài liệu hướng dẫn Dev.
6. R class
Trong eclipse mở  R.java (trong gen/ [Generated Java Files] folder). Nó sẽ như thế này:
package com.example.helloandroid;
public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int textview=0x7f050000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040001;
        public static final int hello=0x7f040000;
    }
}
A project's R.java file is an index into all the resources defined in the file. You use this class in your source code as a sort of short-hand way to refer to resources you've included in your project. This is particularly powerful with the code-completion features of IDEs like Eclipse because it lets you quickly and interactively locate the specific reference you're looking for.
It's possible yours looks slightly different than this (perhaps the hexadecimal values are different). For now, notice the inner class named "layout", and its member field "main". The Eclipse plugin noticed the XML layout file named main.xml and generated a class for it here. As you add other resources to your project (such as strings in the res/values/string.xml file or drawables inside the res/drawable/ directory) you'll see R.java change to keep up.
When not using Eclipse, this class file will be generated for you at build time (with the Ant tool).
You should never edit this file by hand.


Tập tin R.java của dự án là một chỉ số trong việc xác định tất cả các nguồn tài nguyên . Bạn sử dụng lớp này trong mã nguồn của bạn như là cách tham khảo mà bạn đã include . Điều này đặc biệt mạnh mẽ với các tính năng hoàn thành  của các IDE như Eclipse vì nó cho phép bạn nhanh chóng  tương tác xác định vị trí các tài liệu tham khảo cụ thể mà bạn đang tìm kiếm.
Có thể bạn trông hơi khác so với điều này (có lẽ là giá trị thập lục phân là khác nhau). Bây giờ, thông báo các lớp bên trong có tên là "layout",  trường "main". Các plugin Eclipse nhận thấy tập tin XML layout tên là main.xml và tạo ra một lớp cho nó ở đây. Khi bạn thêm các nguồn lực khác để dự án của bạn(chẳng hạn như các chuỗi trong các res / 
values/ string.xml hoặc bên trong res/drawable/), bạn sẽ thấy R.java thay đổi để theo kịp điều này.
Khi không sử dụng Eclipse,lớp tập tin này sẽ được tạo ra cho bạn tại lần build (với công cụ Ant).
Bạn không nên chỉnh sửa tập tin này bằng tay.

7. Debug Your Project

Giờ xem thành quả

package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Object o = null;
        o.toString();
        setContentView(R.layout.main);
    }
}
Lỗi  NullPointerException trong code:
 
Nhẫn "Force Quit" để đóng emulator.
Tìm lỗi và thiết lập  Object o = null; (nhấp đúp chuột vào thanh đánh dấu bên cạnh các dòng mã nguồn). Rồi chọn Run > Debug History > Hello, Android từ trình đơn để vào chế độ debug. Ứng dụng của bạn sẽ khởi động lại trong giả lập, nhưng lần này nó sẽ đình chỉ khi nó đạt đến điểm dừng bạn thiết lập. Sau đó, bạn có thể bước qua các mã trong triển vọng gỡ rối Eclipse, cũng giống như bạnsẽ cho bất kỳ ứng dụng khác.

8. Tạo  Project không dùng Eclipse

Nếu bạn không sử dụng Eclipse (chẳng hạn như nếu bạn thích một IDE, hoặc đơn giản là sử dụng soạn thảo văn bản và các công cụ dòng lệnh) thì các pluginEclipse không thể giúp bạn. Đừng lo lắng mặc dù bạn không bị mất bất kỳ chức năng chỉ bởi vì bạn không sử dụng Eclipse.
Android Plugin cho Eclipse  thực sự chỉ là một bao bọc xung quanh một tập hợp các các công cụ bao gồm với SDK Android. (Những công cụ này, giống như giả lập, aapt, adb, ddms, và những cái đã được diễn tả ở nơi khác.) Vì vậy, nó có thể để bọc những công cụ với một công cụ khác, chẳng hạn như một "kiến xây dựng tập tin.
Android SDK bao gồm một công cụ  tên "Android" có thể được sử dụng để tạo ra tất cả các mã nguồn và thư mục develope cho bạn, cũng như một tập tin build.xml . Điều này cho phép bạn xây dựng dự án của bạn từ dòng lệnh, hoặc tích hợp với IDE của sự lựa chọn của bạn.
Ví dụ, để tạo một dự án HelloAndroid tương tự như tạo ra trong Eclipse, sử dụng lệnh này:


android create project \
    --package com.example.helloandroid \
    --activity HelloAndroid \
    --target 2 \
    --path <path-to-your-project>/HelloAndroid
Điều này tạo ra các thư mục và các tập tin cần thiết cho dự án tại địa điểm được xác định bởi đường dẫn.
Để biết thêm thông tin về cách sử dụng các công cụ SDK được tạo ra và xây dựng các dự án, gặp lại vào bài tiếp.

thanks android

No comments:

Post a Comment