tài liệu lập trình android
Bài 1 Bắt đầu nhé, yêu cầu mọi người không comment từ bây giờ cho đến khi Long thông báo kết thúc và cho thảo luận nhé! Trước tiên Long xin giới thiệu mình tên là Thanh Long sinh năm 1990, hiện đang ở Huế. Hiện đang làm admin cho box lập trình của diễn đàn mình (http://android.vn/forum). Long đã đi làm và đã có 1 ít kinh nghiệm tham gia dự án lập trình ứng dụng android . Do thấy có nhiều bạn muốn tìm hiểu android nên Long đã họp bàn với admin của diễn đàn mình mở lớp dạy online hướng dẫn các bạn học lập trình android bắt đầu từ các bước cơ bản nhất. Do đây là lớp học onl, chỉ hướng dẫn và dạy qua rum nên Long rất mong được sự hợp tác của các bạn. Chính sự tự giác, tìm tòi kiến thức mới làm cho chúng ta giỏi hơn được. --------------------------------------------------------------------------------- Đầu tiên như thường lệ với bất kỳ môn lập trình nào là phần cài đặt tool, các bạn nào chưa cài đặt được vui lòng chọn một trong các cách cài đặt sau. - http://android.vn/threads/18096/ - http://android.vn/threads/2417/ Các bạn vui lòng đọc và làm theo hướng dẫn Trường hợp lỗi cài đặt không thành công vui lòng đăng bài viết vào mục hỏi đáp lập trình java rồi share links muốn được trả lời lên room chat. Các bạn nào cài đặt thành công rồi thì giúp đỡ các bạn chưa thành công nhé! Các bạn mới được add vào nhóm hôm nay chú ý đọc nội quy của rum chat nhé: http://android.vn/threads/24088/ Bây h các bạn hãy bắt đầu tiếng hành đúng 9h15 Long sẽ quay lại tiếp tục hướng dẫn tiếp Không spam nhắm mục đích các bạn onl trễ có thể đọc được bài hướng dẫn của mình ^^ thanks ------------------------ Tiếp theo sau khi đã cài đặt xong (bạn nào chưa cài xong để sau phần thảo luận nhé) Long sẽ hướng dẫn các bạn tạo mới 1 ứng dụng, thuật ngữ tin học hay dùng là "tạo mới 1 project" … mời các bài theo dõi bài học Long đã soạn sẵn, kèm theo video clip hướng dẫn tại http://android.vn/threads/24103/ Sau khi tao mới 1 ứng dụng, để chạy được ứng dụng đó ta cần phải sử dụng tới thiếu bị(thiết bị ở đây là máy thật hoặc ta có thể sử dụng máy ảo) Sau đây là bài biết hướng dẫn tạo một máy ảo cơ bản nhất thường sử dụng nhất mời các bạn theo dõi bài hướng dẫn tạo máy ảo do Long soạn sẵn có clip đính kèm nhé http://android.vn/threads/24104/ Trong video clip Long khởi tạo một máy ảo Android 2.2 (Level 8) Tại sao lại sử dụng máy ảo này? Đơn giản level 2.2 là một level cũ, có độ ổn đỉnh nhất, ít gây ra lỗi nhất giống như Window xp của microsoft vậy thôi ^^ Level 2.2 có đầy đủ mọi hỗ trợ cơ bản nhất đủ để tạo cho các bạn tạo một project, sự khác nhau giữa các phiên bản android Long sẽ giới thiệu cho các bạn sau, hoặc các bạn cũng có thể tự tìm hiểu sau này -------------------------------------------------------------------------- Tiếp theo Long hướng dẫn các bạn các chi tiết các phần trong 1 project android Các bạn vui lòng theo dõi hình ảnh thứ 2 trong topic sau http://android.vn/threads/24107/ Long đã giải thích chi tiết trong topic rồi, ở đây Long chỉ giới thiệu thêm thôi Số 1: Không đơn giản là tên của ứng dụng chúng ta đặt để chạy ứng dụng có rất nhiều cách, một trong các cách đó là các bạn click chuột phải vào trên project -> Chọn run as -> Android application Ngoài ra khi kích chuột phải vào tên project -> chọn properties (ở dưới cùng) nó sẽ hiển thị ra bản "Properties for <tên ứng dụng>" ở đây các bạn có thể nghịch xem ở đây, trong bản này có rất nhiều thông tin của cả Eclipse lẫn ứng dụng của bạn như cấp độ android sử dụng, nguồn, đường dẫn, các thư viện hỗ trợ cho ứng dụng Không cần quan tâm kỹ lắm tới vần đề này ^^ Số 2: thư mục src, giống hoàn toàn như lập trình java thư mục này chứa rất nhiều gói, mỗi gói lại chứa rất nhiều lớp Số 7: Sau này khi làm 1 ứng dụng android tốt (đẳng cấp), chúng ta phải tìm hiểu thêm các thư viện khác và các thư viện này sẽ được đặt trong thư mục libs Rất quan trọng, nó được ví như trái tim của chúng ta vậy Chú ý khi chuyển từ giao diện này sang giao diện khác, chúng ta phải đăng ký cho nó ở đây, nếu không lỗi chạy ứng dụng sẽ bắn lên dừng ứng dụng đột ngột Các bạn mới làm quen với android thường xuyên mắc lỗi này lắm nên các bạn chú ý! Sau khi làm quen với giao diện làm việc rồi ta thử tìm hiểu 1 chút về android và lịch sử của nó cho biết nhé Android là gì? Links: http://android.vn/threads/23812/ -------------------------------------------------------------------- Bài tập hôm nay rất đơn giản, các bạn hãy thữ mày mò, nghịch phá mọi ngóc ngách của project (không phải của Eclipse nhé ^^) làm thế nào thể thay đổi dòng hiển thị "Hello World" thành dòng chữ "Chao mung <tên bạn> đến với android" ---------------------------------------------- Còn đây là bài tổng hợp của Long dành cho các bạn đã có kiến thức và muốn học android nhanh có thể tham khảo. Bài học sẽ lấy 1 ít ra từ bài tổng hợp này do vậy các bạn hãy lưu links này lại nhé http://android.vn/threads/tong-quan-ve-khoa-hoc-lap-trinh-android-mien-phi-free-tai-android- vn.25405/ mọi bài hướng dẫn của Long đều sẽ được cập nhật tại đây! Bài 2 Bài học hôm nay bắt đầu, từ bây giờ mọi người vui lòng không spam vào giữa chừng bài giảng cho tới khi giờ thảo luận bắt đầu nhé! Bài học hôm nay Long sẽ giới thiệu với các bạn về cách tạo 1 giao diện hiển thị trong ứng dụng android, giao diện có đuôi là .xml đặt trong thư mục res/layout tập tin xml này chính là phần hiển thị trong ứng dụng thay vì chúng ta phải code giao diện như java thuần mời các bạn theo dõi bài hướng dẫn có kèm video clip trong topic sau http://android.vn/threads/24163/ các bạn vui lòng đọc bài hướng dẫn và xem clip, Long sẽ quay lại sau ít phút ---------------------------------------------------------------------------------- Tiếp theo Long sẽ giới thiệu chi tiết 1 số đối tượng XML quan trọng thường hay sử dụng Quan sát vào hình ảnh của topic trên nhé các bạn Số 1: TextView Là một đối tượng hiển thị 1 dòng chữ, một thông báo, một để nghị mà do chính chúng ta thiết lập gửi đến cho người dùng ứng dụng này ví dụ: hiển thị dòng chữ "Mời bạn nhập họ và tên" Số 2: EditText Là một đối tượng dành cho người dùng nhập dữ liệu vào ví dụ Long sẽ nhập vào đó là: "thanhlong90.it" Số 3: Button Thường dùng để cho người dùng nhấn vào (click vào) sau khi nhấn vào rồi, hệ thống sẽ tự động xử lý, ví dụ lưu tên "thanhlong90.it" vào một nơi nào đó Số 4: ImageView là một đối tượng hiển thị hình ảnh do chúng ta đưa vào, như trong topic là Long đưa vào 1 hình nền màu xanh Số 5: CheckBox cho phép người dùng chọn làm gì đó hay không, ví dụ như trong khi đăng nhập Skype có có ô checkbox hỏi "bạn có muốn tự động đăng nhập không?" Số 6: RadioButton Thường cho người dùng chọn 1 trong số nhiều các yêu cầu Số 7: Spinner: Sẽ có nhiều dữ liệu cho người khác chọn. cái này gon gàng hơn RadioButton 1 tí Số 8: Thanh tiêu để hiển thị ứng dụng của bạn ---------------------------------------------------------------------------------------------- Ngoài ra Long sẽ giới thiệu nhanh 1 số đối tượng khác nữa - Đối tượng XML - ToggleButton: là 1 nút on/off giống như trên máy tình bỏ túi vậy - Đối tượng XML - ProgressBar:là đối tượng hiện thị tiến trình của 1 công việc đã được bao nhiêu % rồi - Đối tượng XML - SeekBar: là một đối tượng có thể tùy chỉnh 0% - 100% của một cái gì đó ví dụ như volume - Đối tượng XML - RadioGroup: là đối tượng quản lý nhiều RadioButton ở trên cho phép lựa chọn 1 RadioButton duy nhật - Đối tượng XML - ListView: là đối tượng thể hiển một danh sách có điểm chung ví dụ như danh sách tên của học viên lớp học lập trình android free - Đối tượng XML - WebView: Là đối tượng cho phép bạn hiển thị 1 trang web ngay trong ứng dụng của mình với điều kiện là phải có kết nối intenet - Đối tượng XML - SearchView: là đối tượng nhập vào thông tin tìm kiếm giống như trang google.com vậy - Đối tượng XML - VideoView: hiển thị 1 video giống như youtube vậy - Đối tượng XML - Gallery:một đối tượng xem hình ảnh - Đối tượng XML - Các đối tượng ngày giờ: hiển thị thông tin ngày tháng, thời gian và cực nhiều các đối tượng khác nữa Ngoài ra sau này khi làm ứng dụng thực tế, dự án cho khách hàng chúng ta cần phải tạo riêng đối tượng cho chúng ta sử dụng dựa vào các đối tượng có sẵn ví dụ như probar Long đã làm (xem tham khảo thêm) ở bài hướng dẫn tự tạo 1 đối tượng ProgressBar đơn giản. nhớ là xem tham khảo thôi nhé: http://android.vn/threads/24032/ Long xin tạm nghỉ ít phút, phần tiếp theo là hướng dẫn chỉnh sửa hiển thị của 1 đối tượng XML ----------------------------------------------------------------------------------------------- Trước khi qua phần chỉnh sửa code xml, Long giới thiệu thêm 2 đối tượng nữa rất quang trọng - RelativeLayout - LinearLayout 2 đối tượng này có chung đặt điểm là cách bố trí ----------------------------------------------------------------------------------------------- Trong các thuộc tính của 2 đối tượng XML RelativeLayout, LinearLayout các bạn chú ý android:orientation=" . " nếu trong . là => android:orientation="vertical" thì sẽ được bố trí theo dọc, đối tượng này nằm dưới đối tượng kia nếu trong . là => android:orientation="horizontal" thì sẽ bố trí theo hướng ngang, tức là đối tượng sau nằm về phía bên phải của đối tượng trước khi đầy sẽ tự động xuống hàng dưới ------------------------------------------------------------------------------------------------ - Thuộc tính id: android:id="@+id/textView1" thường đặt theo quy ước: @+id/<tên id chú ý ko trùng nhau> để sau này chúng ta biết xử lý đối tượng nào qua id này trong phần code trong class có đuôi .java - Thuộc tính độ rộng: android:layout_width="50dp" ngoài đơn vị dp ra còn tính theo nhiều đơn vị khác px, sp . ngoài ra còn có thể thiết lập như sau: fill_parent (làm đầy phần còn lại của đối tượng XML cha), match_parent (đè toàn bộ lớp cha), wrap_content(nhỏ nhất, hợp lý nhất có thể) - Thuộc tính độ cao: android:layout_height tương tự như thuộc tính của độ rộng - Thuộc tính text: android:text="hello android" thiết lập dòng hiển thị cho đối tượng (chỉ dành cho 1 số đối tượng nhất định) - Thộng tính text ẩn: android:hint="Nhập tên tại đây" hiển thị dòng thông báo mờ mờ chủ yếu trên đối tượng EditText và tương tự như đối tượng này - Thuộc tính trọng lượng : android:gravita"center" cho nội dụng của XML hướng về 1 phía cố định: center, bottom, top, left, right - Thuộc tính nền: android:background=" <đường dẫn hình ảnh> ." Thiết lập hình nền cho đối tượng xml - Thuộc tính cỡ chữ: android:textSize=" " thiết lập cỡ chữ hiển thị trong 1 vài đối tượng - . và có rất nhiều thuộc tính khác nữa, đến Long còn tìm hiểu chưa Hết -------------------------------------------------------------------------------------- Elipse cho chúng ta một lợi thế là dự đoán code sinh ra đúng, hợp lý nên các bạn chỉ cần bấm "android:" sau đó bấm tổ hợp phím ctrl + space sẽ có 1 đống thuộc tính cho bạn chọn (toàn tiếng anh) dựa vào các từ đó bạn cũng sẽ hiểu nó thiết lập thuộc tính gì rồi ai không biết tiếng anh thì vào http://translate.google.com.vn/ để dịch nhé ------------------------------------------------------------------------------------------ Sau đây là phần bài tập http://android.vn/threads/24176/ các bạn nhớ làm bài tập đầy đủ nhé các bạn cứ bình tĩnh dành cho Long 5' để xử lý 1 số việc, đúng 10h Long sẽ công bố thảo luận nhóm! Bài 3 Trước tiên khi giới thiệu về activity 1 lần nữa nhắc các bạn không được spam trong lúc đang giảng bài nhé Đầu tiên mời các bạn theo dõi bài hướng dẫn cách khởi tạo 1 class mới kế thừa activity và cập nhật nó vào AndroidManifest.xml http://android.vn/threads/24213/ ------------------------------ [8:08:03 PM] Nguyễn Lê Hàn Ngọc: :) [8:08:08 PM] thanh long: Bây h Long sẽ nói về quy luật hoạt động của Activity, các bạn chú ý vào hình ảnh trong topic vừa rồi nhé. Khi Activity khởi động nó sẽ thực hiện hàm onCreate() tức là khi chúng ta đã kế thừa rồi thì nó sẽ thực hiện đoạn onCreate() của chúng ta, cụ thể như sau: protected void onCreate(Bundle savedInstanceState) { //Thực hiện lại việc kế thừa super.onCreate(savedInstanceState); //Thiết lập giao diện sử dụng lấy từ giao diện activity_main.xml setContentView(R.layout.activity_main); } hàm này sẽ chạy trước nó sẽ thực hiện hàm onCreate() của lớp cha trước (ở đây lớp cha là Activity) sau đó nó sẽ thực hiện setContentView(R.layout.activity_main); tức là đính kèm cái giao diện XML mà chúng ta thiết kế nó là activity_main.xml (theo ví dụ) - Khi thực hiện onCreate xong thì hiển thị lên giao diện, ví dụ 1 giao diện nào đó cho bạn nhập dữ liệu vào ô EditText, sau rồi làm gì gì đó nữa … - Cho đến khi bạn gọi 1 lớp khác, có thể là 1 Activity khác chồng lên Activity cũ thằng Activity cũ này sẽ thực hiện việc onPause() cụ thể ở đây giống như gấu bắc cực đi ngủ đông vậy :D nó sẽ nằm ngủ cho đến khi 1 cái gì đó gọi nó dậy, ví dụ bạn Hủy đi thằng Activity vừa chồng lên nó - Khi nó dậy, cụ thể là nó sau khi ngủ, dậy và hoạt động trở lại thì nó thực hiện hàm onResume() chúng ta nếu cần thiết sẽ định nghĩa lại 2 thằng này nếu cần thiết ví dụ sau khi ngủ dậy, ta thiết lập 1 đối số nào đó trở về 0, thì kế thừa thằng onResume() rồi trong hàm này ta đặt cho nó = 0 - onStop() là 1 cấp cao hơn, hãy tưởng tượng rằng 1 bài hát khi bạn bấm Stop khi Restart lại nó sẽ chạy bài hát đó lại từ đầu không giống như Pause và Play là dừng ở đâu thì chạy lại ngay ở vị trí đó - onDestroy() khi bị phá hủy hoàn toàn, nó như 1 hơi thở cuối cùng của Activity vậy, trăng trối cái gì đó trước khi chết Vĩnh Viễn . [8:08:57 PM] thanh long: Kiến thức lý thuyết quả là hơi khô khan, nhưng các bạn chỉ cần hiểu sơ sơ như vậy là được, bây giờ thì chúng ta sẽ thực hành về onCreate() và làm cái gì đó trong thằng này!!! bài thực hành ở hướng dẫn mẫu trong topic http://android.vn/threads/24214/ các bạn thử làm theo xem sao nhé ai làm ko được thì nhớ pm riêng Long nhé --------------------------------------------------------------------------------------------- [8:09:16 PM] thanh long: Phần tiếp theo Long sẽ giới thiệu về đối tượng Intent (các bạn chưa xong cứ làm phần thực hành cho xong đã nhé! lý thuyết từ từ đọc sau cũng được) Đối tượng Intent là gì? Đơn giản theo ý nghĩa của nó là mục đích . nhằm làm cái gì đó và thường là trong các ví dụ người ta sẽ gọi 1 Activity khác chồng lên Activity cũ Cú pháp như sau: Intent myIntent = new Intent(<tên Activity hiện tại>.this, <tên Activity mới>.class); <tên Activity hiện tại>.this.startActivity(myIntent); ví dụ như Activity hiện tại là MainActivity và muốn chồng lên nó Activity 2 thì làm như sau: tròng hàm onClick(), thêm 2 dấu // vào trước cái noiDungHienThi.setText("Xin chào thanhlong90.it"); khóa nó lại enter xuống dòng thêm đoạn code: Intent myIntent = new Intent(MainActivity.this, Activity2.class); MainActivity.this.startActivity(myIntent); Nhớ Activity2 phải được khai báo trong Manifest ko thôi xảy ra lỗi trong lúc chạy chương trình sẽ bị rụng 1 cách đột ngột :D và nhớ luôn là phải phân biệt rõ ràng 2 cái: đôi tượng trong XML và đối tượng trong java nhé Xong rồi hãy chạy thử chương trình, click vào nút button và chuyển qua Activity mới ----------------------------------------------------------------------------------------------- Lưu ý 1 điều vô cùng quan trọng như sau, chỉ có thể có tối đa 10 cái Activity chồng lên nhau nếu quá 10 bác Android sẽ tự dọn dẹp, thằng nào nằm dưới cùng sẽ bị onDestroy và vứt vô sọt rắc ^^ ngoài ra có 1 câu lênh như sau: Intent myIntent = new Intent(MainActivity.this, Activity2.class); MainActivity.this.startActivity(myIntent); finish(); hàm finish() sẽ có nhiệm vụ sau khi bắt đầu activity mới sẽ cho em nằm dưới đi ngủ sớm tức là kết thúc (onDestroy) bác activity này sau khi có 1 bác activity khác chồng lên -------------------------------------------------------------------------------------------------- Về Intent không những có chức năng start Activity mới mà có kiêm luôn nhiệm vụ gửi theo 1 cái gì đó giống như hành lý vậy nó có thể đính kèm theo 1 biến String, 1 biến Int, 1 biến boolean hay thậm chí 1 cái mảng dữ liệu cũng được tất đơn giản như sau: Intent myIntent = new Intent(MainActivity.this, Activity2.class); Bundle myBundle = new Bundle(); myBundle.putString("ten", "thanhlong90.it"); myBundle.putInt("tuoi", 23); myIntent.putExtras(myBundle); MainActivity.this.startActivity(myIntent); <<< Bundlegiống như 1 cái bẫy zip nén nó vào hay giống như gói gém hành lý lại vậy và trong activity mới sẽ nhận tiền bằng cách ghi rõ họ tên người gừi ký tên đóng dấu . ^^ Bundle gotBasket = getIntent().getExtras(); String hoten = gotBasket.getString("ten"); int sotuoi = gotBasket.getInt("tuoi"); Bài 4 1) Font chữ chắc hẳn các bạn đã biết về cái này rồi chúng ta từng gặp nhiều font chữ trong Word - Exel hôm nay Long sẽ giới thiệu nó trên android trong một số đối tượng XML có thuộc tính quy định font chữ là android:typeface="<tên font chữ>" ví dụ: <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:typeface="monospace" android:text="@string/hello_world" /> tuy nhiên android chỉ hổ trợ cho chúng ta 4 font chính thôi trong lúc code chúng ta có thể tải font chữ từ ngoài về đặt vào trong thư mục asset và viết code sử dụng nó TextView tv = (TextView) findViewById(R.id.textView1); Typeface myTypeface = Typeface.createFromAsset(getAssets(), "tenFontChu.ttf"); tv.setTypeface(myTypeface); ---------------------------------------------------------------------------------------- 2) Thêm một vài thuộc tính khác trong XML - android:background="@drawable/anhnencuatoi" thiết lập ảnh nền cho một vài đối tượng XML, thường sử dụng ảnh có đuôi .png .jpg đặt trong thư mục drawable - android:paddingTop , Bottom, Left, Right là cách đối tượng xung quanh nó (nếu có) đơn vị thường sử dụng là dp, sp, px . - android:password = "true" bật chế độ ẩn ký tự nhập vào 1 ô EditText - android:clickable="true"/"false" cho phép click vào/không cho phép click vào đối tượng xml đó - android:hint"abcdef" 1 dòng chữ thông báo mờ mờ trên ô EditText - android:textColor="#fff24f" màu Text - android:visibility="invisible" làm tàng hình, ẩn đối tượng đó đi - android:gravity="center" sắp xếp các đối tượng nằm trong nó về chính giữa và còn nhiều nhiều nữa, Long lọc ra các đối tượng thường sử dụng thôi ---------------------------------------------------------------------------------------- Hôm trước Long đã giới thiệu nhiều về TextView, EditText, Button nên hôm nay sẽ giới thiệu tiếp về RadioGroup và Radiobutton, ToggleButton, ProgressBar, AutoCompleteTextView mời các bạn xem một vài demo tại http://android.vn/threads/23795/ cố gắng làm thử nhé ----------------------------------------------------------------------------------------------- Tiếp theo là một vài đối tượng liên quan đến thời gian - TimePicker là một đối tượng đo thời gian gồm giờ và phút (AM,PM) - DigitalClock cũng là 1 đồng hồ hiển thị dưới dạng kiểu Text nhỏ hơn và có đơn vi giây nữa - AnalogClock là đồng hồ có hiển thị 3 kim giờ phút giây giống như đồng hồ của chúng ta vậy - Ngoài ra còn có Calendar là hiển thị ngày tháng năm và chúng ta sẽ gặp lại đối tượng này trong phần bài học sau đổi tượng này chủ yếu là xử lý trong code Các bạn có thể vào XML của 1 Activity để tìm hiểu xem trông như thế nào nhé Bài 5 Như ngày hôm qua Long đã giới thiệu thì hôm nay chúng ta sẽ học về cách làm 1 menu trong ứng dụng Android Trong android menu cũng có rất nhiều loại nhưng người ta thường sử dụng 2 loại menu thôi 1 là menu nằm ở phía dưới màn hình 2 là menu hiện ra và nằm ngay chính giữa màn hình che phần hiển thị của activity lại -------------------------------- Để khởi tạo menu cho activity ta định nghĩa lại hàm (thông thường khi tạo project đã có sẵn rồi) @Override public boolean onCreateOptionsMenu(Menu menu) { } -------------------------------- và để lắng nge, nhận biết một sự kiện khi bạn click chọn 1 item trong menu đó ta kế thừa lại của class Activity hàm Để viết lại hàm này, trước tiên ta đưa con trỏ chuột vào giữa màn hình Eclipse (màn hình code java) chọn “Source” rồi chọn “Override/Implement Methods” để hiển thị hộp thoại cùng tên, sau đó sổ cây thư mục “Activity” đánh dấu vào hàm “onMenuItemSelected” rồi nhấn “OK”. (Chú ý cách này sử dụng để Override lại nhiều hàm khác nữa) và ta có kết quả như sau: @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { } Code vào giữa phần này … -------------------------------- Phần này lớp Activity của android đã xử lý gần hết chúng ta chỉ việc gọi, truyền đối số như tiêu đề, id, hình ảnh hiển thị thôi Nếu muốn xem chi tiết class Activity hoạt động như thế nào, mời các bạn xem ở đây, lưu ý cứ xem qua cho biết thôi, không biết cũng không sao Tiếp theo Long xin nói thẳng luôn là muốn trở thành 1 dân lập trình chuyên nghiệp các bạn chú ý phải học cách search Google với từ khóa tiếng Anh thật nhiều nhé. Ví dụ muốn tìm hiểu mã nguồn của đối tượng Activity hãy lên google search với từ khóa “android activity souce code” và tìm trang tương tự như trang bên dưới … http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/androi d/app/Activity.java . bạn hãy lưu links này lại nhé http:/ /android. vn/threads/tong-quan-ve-khoa-hoc -lap- trinh- android- mien-phi-free-tai -android- vn.25405/ mọi bài hướng dẫn. <LinearLayout xmlns :android= "http://schemas .android. com/apk/res /android& quot; android: layout_width="match_parent" android: layout_height="match_parent"