Thứ Ba, 16 tháng 12, 2014

Sách lập trình Android


Lập trình Android cung cấp cho người đọc những thông tin chi tiết về nền tảng Android và các kĩ năng lập trình trên nền tảng này. Cuốn sách thật sự rất phù hợp cho những ai yêu thích lập trình, đặc biệt là lập trình cho các thiết bị di động, và có mong muốn xây dựng ứng dụng riêng cho mình.. 


Phần 1: Tổng quan về hệ điều hành Android, cung cấp thông tin chi tiết về kiến trúc nền tảng, kiến trúc bảo mật, nguyên lí hoạt động và các thư viện hỗ trợ lập trình Android.

Phần 2: Cấu trúc và các thành phần cơ bản của một ứng dụng Android, cung cấp thông tin về cấu trúc tổng quan và các thành phần cơ bản mà bất kì ứng dụng Android nào cũng phải có. Ngoài ra, phần này còn cung cấp kiến thức về thiết kế giao diện cho các ứng dụng Android. Đây là phần cốt lõi của một ứng dụng Android cơ bản. Hiểu được chúng, bạn hoàn toàn có thể xây dựng được một ứng dụng với những chức năng đơn giản cũng như phức tạp theo mong muốn.

Phần 3: Một số loại đối tượng điều khiển dùng trong thiết kế giao diện ứng dụng, giới thiệu chi tiết các thành phần mà bạn có thể sử dụng để hoàn thiện hơn giao diện cũng như tính năng cho ứng dụng của mình.

Phần 4: Trao đổi và lưu trữ thông tin giữa các ứng dụng lập trình Android, giới thiệu cách thức để trao đổi thông tin qua lại giữa các thành phần trong ứng dụng và trao đổi thông tin qua lại giữa các ứng dụng trong cùng hệ thống hoặc khác hệ thống.


Mọi thông tin chi tiết xin liên hệ : 
HỌC VIÊN CÔNG NGHỆ VEDA 
Địa chỉ : Số 1 - Hoàng Đạo Thúy - Thanh Xuân - Hà Nội 
Email : hocviencongngheveda@gmail.com 
Số điện thoại : 0463292222 - 0986 587 487 
Nguồn:(Veda- sưu tầm)

Khóa học miễn phí lập trình Android miễn phí

(Veda)Khi tới với học viện công nghệ VEDA các bạn được các chuyên gia hướng dẫn cụ thể về lập trình android miễn phí,từ cơ bản cho đến nâng cao.tất cả mọi chi phí về khóa học được trả bằng tháng lương đầu tiên sau khi các bạn kết thúc khóa học.

NỘI DUNG KHÓA HỌC ANDROID MIỄN PHÍ:

- Lập trình Java và ứng dụng Mobile:

+ Tìm hiểu về Java và Lập trình hướng đối tượng

+ Các lĩnh vực ứng dụng mà java có thể làm

+ Cài đặt các công cụ cần thiết để thực hành Java

+ Demo một số ứng dụng Java trên Mobile: Game, Bản đồ số - tìm đường - dẫn đường…

+ Thực hành viết ứng dụng bằng Java: Xây dựng chương trình, Cú pháp chung, khai báo biến, kiểu dữ liệu, vào/ra dữ liệu, chạy thử....

+ Được tư vấn hướng nghiệp ngành nghề

- Ứng dụng lập trình Android:

+ Giới thiệu tổng quan về Android

+ Hướng dẫn lập trình Andoid

+Demo một số sản phẩm chạy bằng Andoid

+ Được thực hành viết chương trình bằng Android cho điện thoại di động
Địa điểm:
Địa chỉ : Số 1 - Hoàng Đạo Thúy - Thanh Xuân - Hà Nội
Email : hocviencongngheveda@gmail.com
Số điện thoại : 0463292222 - 0986 587 487
Nguồn:(Veda-sưu tầm)

Thứ Năm, 11 tháng 12, 2014

Nên học android ở đâu???

(Veda)Chương trình Khóa học android chi tiết:
chuong trinh android co ban LẬP TRÌNH ANDROID CƠ BẢN
Giới thiệu khóa học
Khóa học android được thiết kế nhằm mục đích cung cấp cho người học các cơ bản để phát triển được các ứng dụng trên nền tảng Android . Nội dung khóa học được xây dựng hoàn toàn bằng tiếng Việt dựa trên phiên bản Android SDK mới nhất của Google. Giờ học được bố trí thông minh, kết hợp giữa các giờ lý thuyết, thực hành, các buổi hội thảo, workshop và bài tập lớn nhằm đem lại khả năng tiếp thu kiến thức nhanh nhất đến người học.
Kết thúc khóa học bạn có thể làm được những việc sau:
1. Có kiến thức cơ bản về nền tảng Android.
2. Được trải nghiệm một môi trường học tập tiên tiến thiết kế theo tiêu chuẩn quốc tế.

3. Tự phát triển được các ứng dụng Android của riêng mình.
Đối tượng nào nên tham gia Khóa học android này?
1. Biết và sử dụng tốt ngôn ngữ Java. (Nếu chưa biết bạn có thể đăng ký học khóa lập trình ngôn ngữ Java với mức phí ưu đãi)
2. Những lập trình viên đang đi làm muốn có cơ hội thay đổi nghề nghiệp, vị trí, chức vụ hoặc nâng cao thu nhập bản thân.


3. Những bạn trẻ yêu thích và muốn tìm hiểu vê lập trình ứng dụng trên thiết bị di động.

4. Các bạn sinh viên năm cuối khoa CNTT muốn chuẩn bị tốt con đường sự nghiệp của mình.
Điều kiện tham gia

  1. Yêu thích và đam mê lập trình.

    2. Có kiến thức cơ bản về XML

    3. Có kiến thức cơ bản về di động, thiết kế.
    4. Biết và sử dụng thành thạo ngôn ngữ Java
  2. (Có thể đăng ký tham gia khóa học lập trình Java – với mức phí là 0 đồng với những bạn chưa biết)
“Đặt cho mình sứ mệnh cung cấp nguồn nhân lực chất lượng cho thị trường phần mềm tại Việt Nam mà cụ thể là lĩnh vực Lập trình điện thoại di động, kiến thức có được với chương trình học tại Veda sẽ giúp học viên nắm bắt cơ hội nghề nghiệp đầy hứa hẹn sau khi tốt nghiệp.”
Nguồn:(Veda-sưu tầm)

Thứ Ba, 9 tháng 12, 2014

THÔNG BÁO TUYỂN SINH CAO ĐẲNG NGHỀ NĂM 2014 - 2015

Trường Cao Đẳng nghề Công nghệ và Kinh tế Hà Nội thông báo tuyển sinh cao đẳng nghề năm học 2014 - 2015:
Ngành nghề đào tạo:
* Quản trị du lịch Khách sạn       * Kỹ thuật chế biến món ăn                 
* Công nghệ thông tin                 * Xây dựng dân dụng
I. Chỉ tiêu & điều kiện tuyển sinh:
       Mỗi ngành 100 chỉ tiêu, Học sinh đã tốt nghiệp  THCS, THPT hoặc tương đương, nam cao từ 1m60 trở lên, nữ 1m55 trở lên, có sức khỏe, không mắc bệnh truyền nhiễm, không tiền án tiền sự, tuổi từ 18- 30.
II. Thời gian đào tạo
Hệ sơ cấp: Thời gian từ 06 tháng đến 01 năm
Đào tạo:  Ngoại ngữ tạo nguồn XKLĐ
Hệ trung cấp: Thời gian từ 16 - 20 tháng
Hệ Cao Đẳng: Thời gian từ 24 đến 36 tháng
III. Thời gian nhận hồ sơ và khai giảng: Nhận hồ sơ liên tục, khai giảng vào các ngày đầu tháng trong năm.
IV. Hình thức đào tạo:
- Đào tạo theo cấp độ, sinh viên học hệ sơ – trung cấp – cao đẳng.  Đào tạo tay nghề thực hành kết hợp đào tạo tiếng Nhật, tiếng Trung cho Sinh viên.
-  Sau khi học từ 03 đến 06 tháng, tùy vào trình độ tiếng và tay nghề, sinh viên sẽ được tham gia phỏng vấn trực tiếp bởi các nhà tuyển dụng nước ngoài do Công ty nhà nước MTV ĐT&PT Nông nghiệp Hà Nội tổ chức.
-  Thời gian Sinh viên học đạt trình độ hệ đào tạo nào sẽ cấp bằng tương ứng trình độ đó, sau khi đi lao động về nước sinh viên có thể học tiếp chương trình liên thông để lấy bằng ở hệ cao hơn.
-  Được liên thông lên đại học tại Malaysia với chi phí thấp như tại Việt nam cam kết  viêc làm ngay từ khi đang học thu nhập từ 8 – 15 tr VNĐ.
V. Thị trường Lao động và thu nhập:
 Sinh viên được lựa chọn thị trường lao động, ngành nghề trước khi đăng ký học;
- Ngành nghề: Du lịch khách sạn, chế biến món ăn. Được đi lao động tại Macao. Sinh viên  đăng ký  học Tiếng Trung, thu nhập từ 15tr VNĐ đến 30tr VNĐ/tháng, chưa kể làm thêm, chi phí xuất cảnh thấp khoảng 20 tr, được nhà nước hỗ trợ vay vốn đi Lao động tương đương tối thiểu là hai tháng lương.
- Đối với học sinh ghi danh đi làm việc tại thị trường Trung đông Công ty sẽ hỗ trợ bảo lãnh toàn bộ phí xuất cảnh, Thu nhập bình quân khoảng 10 tr VNĐ.
- Ngành nghề: Xây dựng,Công nghệ thông tin . Được đi lao động hoặc tu nghiệp sinh tại Nhật Bản, sinh viên học thêm Tiếng Nhật. Thu nhập từ 30 đến 50 triệu VNĐ/01 tháng phụ thuộc tay nghề và ngoại ngữ.
MỌI CHI TIẾT XIN LIÊN HỆ:
Số 1, Hoàng Đạo Thúy, Thanh Xuân, Hà Nội HOTLINE: 0967 000 388 
Email: daotaohacotab@gmail.com 

Thứ Tư, 3 tháng 12, 2014

Lập Trình Android-Tóm lược lịch sử Android qua các phiên bản part 1

(Veda)Hệ điều hành Android của Google đã trải qua chặng đường kinh ngạc kể từ khi nó ra mắt trên T-Mobile G1, một nửa thập kỉ tưởng chừng đó là một thời gian dài nhưng nếu xét trên quy mô của sự phát triển máy tính thì đó là một sự phát triển khác biệt, sự phát triển đến chóng mặt. Điện thoại thông minh phát triển phát triển nhanh chóng trong chớp mắt và hệ điều hành Android cũng đã có mặt trong sự phát triển của trung tâm đó.

[​IMG]

Hệ điều hành Android đã trải qua chặng đường năm năm phát triển, hàng loạt phiên bản mang nhiều cải tiến ra mắt. Sau đây là các tính năng chủ chốt trong các phiên bản Android từ khi ra mắt đến nay.

Android 1.0

Ra mắt: ngày 23-11-2008.

HTC Dream là dòng smartphone thương mại dùng Android đầu tiên với kiểu dáng trượt kèm bàn phím vật lý. Phiên bản Android 1.0 chưa được Google định hình tên mã, dù trước đó tên gọi Astro Boy hay Bender được gán cho thế hệ đầu tiên này.

Android 1.0 rất nguyên sơ, tích hợp sẵn khả năng đồng bộ dữ liệu với các dịch vụ trực tuyến của Google như Gmail, Google Calendar và Contacts, một trình phát media, hỗ trợ Wi-Fi và Bluetooth, thanh trạng thái hiển thị các thông báo ứng dụng và một ứng dụng chụp ảnh (camera) tuy chưa cho phép thay đổi độ phân giải và chất lượng ảnh.

Android 1.1

Ra mắt: ngày 9-2-2009.

[​IMG]

Bên cạnh con số, Google rục rịch đưa hệ thống tên gọi (tên mã) vào các phiên bản Android. Tuy chưa chính thức áp dụng nhưng Android 1.1 đã có tên Petit Four. Không bao gồm nhiều tính năng, phiên bản này bổ sung một số chức năng mới cho Google Maps hiển thị chi tiết hơn, bàn phím ảo gọi điện thoại đã có thể hiển thị hoặc ẩn khi gọi, chương trình SMS cho phép người dùng lưu tập tin đính kèm. Android 1.1 sửa một số lỗi trong Android 1.0.

Android 1.5: Cupcake

Ra mắt: ngày 30-4-2009.

Cupcake, tên mã đầu tiên áp dụng cho phiên bản Android. Cupcake mang nhiều tính năng mới như bàn phím ảo có khả năng dự đoán từ đang gõ, từ điển từ ngữ do người dùng đặt ra, hỗ trợ widget trên giao diện chủ, quay phim và phát lại video clip, lược sử thời gian cuộc gọi, chế độ tự động xoay màn hình theo hướng sử dụng (screen rotation). Trình duyệt web trong Cupcake có thêm khả năng sao chép/ dán (copy/paste).

[​IMG]

Ngoài ra, phiên bản này cho phép người dùng hiển thị hình ảnh trong danh bạ, một điểm thú vị mà hầu hết người dùng điện thoại di động muốn có. Màn hình chuyển đổi và hình ảnh khi khởi động máy được làm mới.

Android 1.6: Donut

Ra mắt: ngày 30-9-2009.

Donut khắc phục các chức năng "lỏng lẻo" trong Cupcake, mở rộng chức năng tìm kiếm bằng giọng nói và ký tự đến bookmark và danh bạ. Android Market trở thành "chợ đầu mối" để người dùng tìm kiếm và xem các ứng dụng Android. Ứng dụng chụp ảnh và quay phim trong Donut nhanh hơn. Hệ điều hành hỗ trợ màn hình có độ phân giải lớn hơn, hướng đến các thế hệ smartphone màn hình lớn.

[​IMG]

Android 2.0: Eclair

Ra mắt: ngày 26-10-2009.

Chỉ sau gần một tháng ra mắt Donut (Android 1.6), Google tung ra Eclair, phiên bản được nhận định là "bước đi lớn" của hệ điều hành này.

[​IMG]

Eclair cải tiến rất nhiều, từ giao diện đến ứng dụng bên trong hệ thống. Ứng dụng chụp ảnh tăng cường thêm chức năng zoom số (phóng to), cân bằng trắng, hỗ trợ đèn flash và các hiệu ứng màu sắc.

Hệ thống hoạt động ổn định hơn, cải thiện khả năng xử lý, hỗ trợ kết nối Bluetooth tốt hơn, đặc biệt tùy chọn đồng bộ nhiều tài khoản. Một điểm thuận tiện được đánh giá cao lúc bấy giờ là giao diện danh bạ cho phép nhấn chọn vào một ảnh danh bạ để gọi, nhắn tin hay email đến họ. Giao diện ứng dụng lịch biểu (Calendar) cũng thay đổi.

Eclair là phiên bản Android đầu tiên hỗ trợ ảnh nền động (live wallpaper) dù tùy chọn này tiêu tốn khá nhiều pin.

Android 2.2: Froyo

Ra mắt: ngày 20-5-2010.

Từ phiên bản 2.0 trở đi, Android dần hoàn thiện hơn. Phiên bản 2.2 (Froyo) mang Adobe Flash đến Android, kéo theo hàng loạt ứng dụng và game trên nền Flash. Người dùng cũng có thể xem video clip nền Flash như YouTube và "ra lệnh" thực hiện cuộc gọi qua Bluetooth.

[​IMG]

Một chức năng mới trong Froyo được nhóm người dùng lưu động yêu thích là USB Tethering và Wi-Fi Hotspot, biến chiếc smartphone Android thành thiết bị phát sóng Wi-Fi từ kết nối 3G. Tính năng này được sử dụng rất phổ biến đến ngày nay.

Lần đầu tiên Android cho phép cài đặt ứng dụng (app) lên thẻ nhớ SD thay vì mặc định cài ngay vào bộ nhớ trong của thiết bị. Điểm "đầu tiên" nữa trong Froyo bao gồm mật khẩu đã hỗ trợ số và chữ số. Thiết bị đầu tiên mang nhãn Froyo ra mắt thị trường là HTC Nexus One.

Android 2.3: Gingerbread

Ra mắt ngày: 6-12-2010.

Đến cuối năm 2012, Gingerbread vẫn đang "phủ sóng" trên rất nhiều thiết bị dùng Android, chiếm đến hơn phân nửa (54%). Google hợp tác Samsung trình làng dòng smartphone đầu tiên sử dụng Gingerbread mang tên Nexus S, hỗ trợ công nghệ giao tiếp tầm gần NFC.

[​IMG]

Gingerbread đưa vào hệ thống một công cụ quản lý tải tập tin, cho phép theo dõi và truy xuất đến các tập tin đã tải về máy. Hệ thống này hỗ trợ nhiều camera cho các thiết bị có camera mặt sau và trước, quản lý nguồn pin hiệu quả hơn, tiết kiệm thời lượng pin. Phiên bản này khắc phục khá nhiều lỗi từ Froyo, kèm theo một số điều chỉnh trong giao diện người dùng (UI).

Android 3.0: Honeycomb

Ra mắt: ngày 22-2-2011.

Đây không chỉ là một phiên bản, mà có thể xem là một thế hệ Android đầu tiên dành riêng cho máy tính bảng (tablet), ra mắt cùng tablet Motorola XOOM.

[​IMG]

Mang những tính năng từ thế hệ Android 2.x, Android 3.0 cải tiến giao diện phù hợp với cách sử dụng máy tính bảng, bàn phím ảo thân thiện hơn, hỗ trợ xử lý đa tác vụ (multi-tasking), cho phép chuyển đổi qua lại các ứng dụng đang cùng chạy. Không chỉ có bề mặt được trau chuốt, phần lõi hệ thống có các cải tiến tương thích với phần cứng như hỗ trợ chip xử lý (CPU) đa lõi, tăng tốc phần cứng...
Android 3.0 đặt nền móng quan trọng cho thế hệ Android 4.x hợp nhất, khắc phục sự phân mảng của Android (có các phiên bản riêng dành cho smartphone và tablet).

Android 4.0: Ice Cream Sandwich

Ra mắt: ngày 19-10-2011.

"Bánh kem sandwich" (ICS) là thế hệ Android được mong đợi nhất đến nay, ra đời cùng dòng smartphone "bom tấn" Samsung Galaxy Nexus, thế hệ smartphone đầu tiên trang bị ICS.

[​IMG]

Android 4.0 đưa chức năng truy xuất nhanh các ứng dụng thường dùng vào phần bên dưới giao diện chủ, tùy biến widget, dễ sắp xếp và duyệt danh sách ứng dụng hơn. Các ứng dụng đã có thể truy xuất nhanh từ màn hình khóa thiết bị (Lock screen), hiện các hãng sản xuất thiết bị chỉ mới cho phép Camera có thể chọn nhanh từ Lock screen.

Ice Cream Sandwich hoạt động mượt mà, nhanh và đẹp hơn.

Android 4.1: Jelly Bean

Ra mắt: 9-7-2012.

Máy tính bảng Nexus 7, sản phẩm hợp tác giữa Google và Asus, là thiết bị dùng Jelly Bean đầu tiên ra mắt. Android 4.1 nâng tầm hoạt động cho hệ điều hành của Google, trở thành hệ điều hành cho thiết bị di động hàng đầu hiện nay, đe dọa cả "ông lớn" Windows.

Khả năng sắp xếp giao diện chủ và widget trong Jelly Bean rất tùy biến và linh hoạt. Hệ thống hỗ trợ dịch vụ ví điện tử Google Wallet, đặc biệt trình duyệt web mặc định trong Android được thay thế bởi đại diện tên tuổi: Chrome, với khả năng đồng bộ dữ liệu theo tài khoản với bản Chrome trên máy tính.

[​IMG]

Jelly Bean giới thiệu Google Now, dịch vụ trực tuyến mới hiện chỉ dành cho Android, một phụ tá ảo đắc lực cho công việc sắp xếp lịch trình, tìm kiếm thông tin, xác định vị trí... Rất đa năng và được xem như lời đáp trả của Google với "phụ tá ảo" Apple Siri trong iOS.

Android 4.2: vẫn là Jelly Bean

Chỉ sau gần năm tháng ra mắt Android 4.1, Google tiếp tục bồi thêm sức nặng cho Android với phiên bản 4.2 và vẫn mang tên mã Jelly Bean.

Android 4.2 tiếp tục mang đến những cải tiến hấp dẫn cho ứng dụng chụp ảnh (Camera) như HDR, Photo Sphere, hiệu ứng ảnh, Google Now, đưa tính năng lướt chọn từ rất hay trong bàn phím ảo. Chức năng "bom tấn" hỗ trợ nhiều tài khoản người dùng (multi-user profile) lần đầu tiên được áp dụng trong Android 4.2 nhưng chỉ có người dùng máy tính bảng thừa hưởng chức năng này.

Android 4.3

Android 4.3 đã được công bố cùng với Nexus 7 thế hệ 3 vào ngày 24 tháng 7 năm 2013 . Bản cập nhật này đã thêm một số tính năng nhỏ. Với Android 4.3, cách thiết bị xử lý thông báo được thay đổi. Thay vì xóa là mất hết như hiện nay, người dùng có thể xem lại toàn bộ lịch sử thông báo trong khoảng thời gian nhất định. Các ứng dụng của bên thứ 3 cũng có quyền truy cập vào khu vực này, một tiện ích sẽ giúp hoạt động tốt cho các thiết bị như đồng hồ thông minh... 

Những thay đổi ẩn bên trong lõi hệ điều hành cũng rất đáng chú ý. Android 4.3 sẽ hỗ trợ OpenGL ES 3.0 tối ưu cho các ứng dụng game sử dụng đồ họa 3D. Google Play Games cũng bắt đầu xuất hiện cho phép người dùng lưu màn chơi, theo dõi bạn bè cũng như xem bảng xếp hạng. 

Android 4.4: Kitkat

Mặc dù Google chưa phát hành chính thức nhưng Google mới đây đã cho biết rằng phiên bản kế tiếp của Android sẽ là 4.4 KitKat, được đặt theo tên một loại bánh xốp phủ chocolate của hãng Nestle được bán trên toàn cầu. Dự kiến Kitkat sẽ được ra mắt vào tháng 10/2013 cùng với chiếc điện thoại Nexus thế hệ tiếp theo.
nguồn:(Veda-sưu tầm)

Thứ Bảy, 29 tháng 11, 2014

HƯỚNG DẪN LẬP TRÌNH CƠ BẢN VỚI ANDROID - BÀI 3

(Veda)Trong bài này mình sẽ hướng dẫn lập trình cơ bản với android cách tạo 1 custom ViewGroup, sử dụng ViewGroup này vào ListView, và cuối cùng là tạo 1 Option Menu. Đây cũng sẽ là bài cuối cùng mình viết về làm việc với View, các bài sau sẽ chuyển qua Intent và BroadCast Receiver.

Custom ViewGroup
ViewGroup thông thường chúng ta hay gặp là LinearLayout, Relative Layout. Xây dựng custom ViewGroup cho phép chúng ta tạo 1 tập các widget được sắp xếp theo ý muốn rồi đưa vào sử dụng.

Yêu cầu: Xây dựng ứng dụng dạng To Do List: Cho phép nhập vào nội dung công việc và thời gian thực hiện công việc rồi đưa vào list công việc. Cho phép xóa các công việc khỏi list.

B1: Khởi tạo project: File -> New -> Android Project
Project name: Example 3
Build Target: Chọn Android 1.5
Application name: Example 3
Package name: at.exam
Create Activity: Example
=> Kích nút Finish.

B2: Xây dựng custom view group trong XML. Đi tới res\layout tạo 1 file XML mới là list.xml. Gõ nội dung sau vào:
Mã:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:orientation="horizontal">     <CheckBox           android:id="@+id/check_work"           android:layout_width="wrap_content"           android:layout_height="wrap_content"           android:text=""           android:paddingTop="45px"           android:paddingRight="10px"                 />       <LinearLayout           android:layout_width="wrap_content"           android:layout_height="wrap_content"           android:orientation="vertical"                 >           <TextView               android:id="@+id/work_content"               android:textSize="24px"               android:layout_width="wrap_content"               android:layout_height="wrap_content"               android:lines="1"               android:textColor="@color/work_color"           />           <TextView               android:id="@+id/time_content"               android:textSize="16px"               android:layout_width="wrap_content"               android:layout_height="wrap_content"               android:lines="1"               android:textColor="@color/time_color"           />       </LinearLayout> </LinearLayout>
Custom ViewGroup của chúng ta ở đây khá đơn giản, đó là 1 LinearLayout chứa 2 thành phần: 1 CheckBox và 1 LinearLayout khác gồm 2 TextView để hiển thị nội dung công việc và thời gian.

B3: Đã xong giao diện cho custom ViewGroup, chúng ta sẽ thiết kế giao diện cho chương trình trong main.xml. Ở đây mình dùng lại giao diện của Example 2 trong bài 2.
Mã:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     >     <EditText         android:id="@+id/work_enter"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:hint="@string/work_hint"         android:lines="1"         android:textSize="24px"     />     <LinearLayout         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:orientation="horizontal"         >         <TextView             android:layout_width="50px"             android:layout_height="wrap_content"             android:text="@string/hour_edit"             android:typeface="normal"             android:textSize="15px"             android:textStyle="bold"             android:padding="5px"         />         <EditText             android:id="@+id/hour_edit"             android:layout_width="45px"             android:layout_height="wrap_content"             android:hint="12"             android:textColorHint="@color/hint_color"             android:textSize="20px"             android:gravity="center"             android:padding="5px"             android:numeric="integer"             android:maxLength="2"         />         <TextView             android:layout_width="65px"             android:layout_height="wrap_content"             android:text="@string/minute_edit"             android:typeface="normal"             android:textSize="15px"             android:textStyle="bold"             android:padding="5px"         />         <EditText             android:id="@+id/minute_edit"             android:layout_width="45px"             android:layout_height="wrap_content"             android:hint="00"             android:textColorHint="@color/hint_color"             android:textSize="20px"             android:gravity="center"             android:padding="5px"             android:numeric="integer"             android:maxLength="2"         />             </LinearLayout>     <Button         android:id="@+id/button"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:gravity="center"         android:text="@string/button_content"         />     <ListView         android:id="@+id/list"         android:layout_width="fill_parent"         android:layout_height="wrap_content"     /> </LinearLayout>
B4: Tạo file colors.xml trong res\value:

Mã:
<?xml version="1.0" encoding="utf-8"?> <resources>     <color name="work_color">#ffffff</color>     <color name="time_color">#cccccc</color>         <color name="hint_color">#cccccc</color> </resources>
work_color là màu của nội dung công việc trong list. time_color màu của thời gian công việc. hint_color màu của text hint (dòng hướng dẫn) các EditText.

B5: Chỉnh sửa file strings.xml trong res\value:

Mã:
<?xml version="1.0" encoding="utf-8"?> <resources>     <string name="app_name">Example 3</string>     <string name="work_hint">Enter the work here</string>     <string name="hour_edit">Hour</string>     <string name="minute_edit">Minute</string>     <string name="button_content">Add work</string> </resources>
B6: Time to coding. Đi tới src\at.exam tạo một class mới là CustomViewGroup với nội dung sau:
Mã:
package at.exam;  import android.content.Context; import android.view.LayoutInflater; import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.TextView;  public class CustomViewGroup extends LinearLayout {     public CheckBox cb;     public TextView workContent;     public TextView timeContent;     public CustomViewGroup(Context context) {         super(context);                  //Sử dụng LayoutInflater để gán giao diện trong list.xml cho class này          LayoutInflater li = (LayoutInflater) this.getContext()                                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);         li.inflate(R.layout.list, this, true);                  //Lấy về các View qua Id         cb = (CheckBox) findViewById(R.id.check_work);         workContent = (TextView) findViewById(R.id.work_content);         timeContent = (TextView) findViewById(R.id.time_content);     } }
Đoạn code trên giúp ta định nghĩa giao diện của custom ViewGroup mới dựa trên file list.xml. Mọi người cũng có thể tạo giao diện bằng code, ko cần sử dụng XML nhưng sẽ phức tạp hơn và mình cũng ko giới thiệu ở đây.

B7: Tạo 1 class Work cũng trong at.exam để thể hiện công việc:
Mã:
package at.exam;  public class Work {     private String workContent;     private String timeContent;     private boolean isChecked;          public Work(String workContent, String timeContent) {         this.workContent = workContent;         this.timeContent = timeContent;         isChecked = false;     }          public String getContent() {         return workContent;     }          public String getTime() {         return timeContent;     }          public void setChecked(boolean isChecked) {         this.isChecked = isChecked;     }          public boolean isChecked() {         return isChecked;     } }
Code rất đơn giản nên mình sẽ không chú thích nữa.

B8: Chúng ta đã tạo xong custem ViewGroup, bây giờ chính là lúc sử dụng. Tạo 1 class mới tên là ListWorkApdapter trong at.exam:
Mã:
package at.exam;  import java.util.ArrayList; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import android.widget.CompoundButton.OnCheckedChangeListener;  public class ListWorkAdapter extends ArrayAdapter<Work>{     ArrayList<Work> array;     int resource;     Context context;          public ListWorkAdapter(Context context, int textViewResourceId,             ArrayList<Work> objects) {         super(context, textViewResourceId, objects);         this.context = context;         resource = textViewResourceId;         array = objects;             }          //Phương thức xác định View mà Adapter hiển thị, ở đây chính là CustomViewGroup     //Bắt buộc phải Override khi kế thừa từ ArrayAdapter     @Override     public View getView(int position, View convertView, ViewGroup parent) {         View workView = convertView;                  if (workView == null) {             workView = new CustomViewGroup(getContext());         }                  //Lấy về đối tượng Work hiện tại         final Work work = array.get(position);          if (work != null) {             TextView workContent = ((CustomViewGroup) workView).workContent;             TextView timeContent = ((CustomViewGroup) workView).timeContent;             CheckBox checkWork = ((CustomViewGroup) workView).cb;                          //Set sự kiện khi đánh dấu vào checkbox trên list             checkWork.setOnCheckedChangeListener(new OnCheckedChangeListener() {                  @Override                 public void onCheckedChanged(CompoundButton buttonView,                         boolean isChecked) {                     work.setChecked(isChecked);                                     }                             });                          //Lấy về nội dung cho TextView và CheckBox dựa vào đối tượng Work hiện tại             workContent.setText(work.getContent());             timeContent.setText(work.getTime());             checkWork.setChecked(work.isChecked());         }                 return workView;     }     }
ListWorkAdapter sẽ được sử dụng thay thế cho ArrayAdapter được bind với ListView. Thông thường ArrayAdapter chỉ cho hiển thị String bằng TextView, nhưng với việc kế thừa và override phương thức getView, ta có thể định nghĩa lại hiển thị cho các thành phần của ListView.

B9: Việc cuối cùng cần làm là viết lại Activity. Tới Example.java và chỉnh sửa theo nội dung sau:
Mã:
package at.exam;  import java.util.ArrayList;  import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView;  public class Example extends Activity {         //Các hằng dùng cho tạo Option Menu     private static final int DELETE_WORK = Menu.FIRST;     private static final int ABOUT = Menu.FIRST + 2;          ArrayList<Work> array;     ListWorkAdapter arrayAdapter;     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);                  array = new ArrayList<Work>();         arrayAdapter = new ListWorkAdapter(this,                  R.layout.list, array);                  final EditText workEnter = (EditText) findViewById(R.id.work_enter);         final EditText hourEdit = (EditText) findViewById(R.id.hour_edit);         final EditText minuteEdit = (EditText) findViewById(R.id.minute_edit);                  final Button button = (Button) findViewById(R.id.button);                  //Tạo list view cho danh sách công việc         final ListView list = (ListView) findViewById(R.id.list);         list.setAdapter(arrayAdapter);                  OnClickListener add = new OnClickListener() {             @Override             public void onClick(View v) {                 if (workEnter.getText().toString().equals("") ||                         hourEdit.getText().toString().equals("") ||                         minuteEdit.getText().toString().equals("")) {                     AlertDialog.Builder builder = new AlertDialog.Builder(Example.this);                     builder.setTitle("Info missing");                     builder.setMessage("Please enter all information of the work");                     builder.setPositiveButton("Continue", new DialogInterface.OnClickListener() {                         public void onClick(DialogInterface dialog, int which) {                             // TODO Auto-generated method stub                                                     }                                             });                     builder.show();                 }                 else {                     String workContent = workEnter.getText().toString();                     String timeContent = hourEdit.getText().toString() + ":"                                     + minuteEdit.getText().toString();                     Work work = new Work(workContent, timeContent);                     array.add(0, work);                     arrayAdapter.notifyDataSetChanged();                     workEnter.setText("");                     hourEdit.setText("");                     minuteEdit.setText("");                 }             }                      };                  button.setOnClickListener(add);             }          //Tạo Option Menu     public boolean onCreateOptionsMenu(Menu menu) {         super.onCreateOptionsMenu(menu);                 menu.add(0, DELETE_WORK, 0,"Delete" ).setIcon(android.R.drawable.ic_delete);                 menu.add(0, ABOUT, 0,"About" ).setIcon(android.R.drawable.ic_menu_info_details);         return true;     }          //Xử lý sự kiện khi các option trong Option Menu được lựa chọn     public boolean onOptionsItemSelected(MenuItem item) {         switch (item.getItemId()) {                         case DELETE_WORK: {                 deleteCheckedWork();                 break;             }                         case ABOUT: {                 AlertDialog.Builder builder = new AlertDialog.Builder(this);                 builder.setTitle("VietAndroid");                 builder.setMessage("AUTHOR:" + "\n" + "  Nguyen Anh Tuan" + "\n" + "SOURCE:" + "\n" + "  diendan.vietandroid.com");                 builder.setPositiveButton("Close", new DialogInterface.OnClickListener() {                                                         public void onClick(DialogInterface dialog, int which) {                     }                 });                 builder.setIcon(android.R.drawable.ic_dialog_info);                 builder.show();                 break;             }         }         return true;        }      private void deleteCheckedWork() {         if (array.size() > 0) {             for (int i = array.size() - 1; i >= 0; i--) {                 if (array.get(i).isChecked()) {                     array.remove(i);                     arrayAdapter.notifyDataSetChanged();                     continue;                 }             }         }             } }
OK. Vậy là xong. Option Menu là menu ẩn chỉ hiện ra khi bạn nhấn nút Menu của điện thoại. Option Menu rất tiện trong việc đưa ra các tùy chỉnh, giống như khi bạn nhấn phím Esc khi đang chơi game trên PC vậy.

Các bạn có thể lưu ý là thay vì sử dụng ArrayList<String> như trước mình đã thay bằng ArrayList<Work> và trong khởi tạo đối tượng arrayAdapter thì đối số thứ 2 là R.layout.list thay vì android.R.layout.simple_list_item_1, nghĩa là chúng ta đã sử dụng layout do mình tự tạo thay vì layout Android cung cấp sẵn cho hiển thị các thành phần của ListView.

Nếu chạy thử, các bạn có thể thấy khi ta đánh dấu vào checkbox của 1 thành phần trong list, rồi nhấn Menu và chọn delete thì thành phần sẽ bị gỡ bỏ khỏi danh sách.

***Cảm ơn các bạn đã theo dõi bài hướng dẫn lập trình cơ bản với android của mình!!!
Nguồn:(Veda-sưu tầm)

Thứ Sáu, 28 tháng 11, 2014

HƯỚNG DẪN LẬP TRÌNH CƠ BẢN VỚI ANDROID - BÀI 1

Để lập trình android, mình nghĩ mọi người chỉ cần kiến thức java căn bản là hoàn toàn ok. Căn bản ở đây có nghĩa là hiểu được thế nào là class, package, biết ý nghĩa của các từ khóa như public, private, protected,... thành thạo các lệnh cơ bản như if, for(), switch(), while(), ... biết sd các lệnh như Integer.parseInt() hay String.valueOf()...

Yêu cầu kiến thức cho khóa học:
Để lập trình android, mình nghĩ mọi người chỉ cần kiến thức java căn bản là hoàn toàn ok. Căn bản ở đây có nghĩa là hiểu được thế nào là class, package, biết ý nghĩa của các từ khóa như public, private, protected,... thành thạo các lệnh cơ bản như if, for(), switch(), while(), ... biết sd các lệnh như Integer.parseInt() hay String.valueOf()... Nên có thêm kiến thức về gói java.util vì đây là gói hỗ trợ nhiều lớp rất mạnh được sử dụng trên mọi nền, ngoài ra các gói như java.io, java.net... cũng được recommended
Các kiến thức về các gói lập trình cho desktop như java.awt, java.swing hoàn toàn không cần thiết (bản thân mình cũng chưa sd cái này bao giờ, nhảy vào học java là học J2ME luôn), hay các gói của J2ME cũng vậyCác kiến thức về các gói lập trình cho desktop như java.awt, java.swing hoàn toàn không cần thiết (bản thân mình cũng chưa sd cái này bao giờ, nhảy vào học java là học J2ME luôn), hay các gói của J2ME cũng vậy)
Cài đặt Android để lập trình:
Để lập trình Android thì mỗi bộ SDK của Google là không đủ, bạn còn cần tích hợp nó vào một IDE như Eclipse. Anh Giáp đã có 2 bài hướng dẫn rất chi tiết về cài đặt Android trong Eclipse cũng như Netbeans, nhưng theo mình mọi người nên sử dụng Eclipse hơn vì nó có nhiều tính năng hỗ trợ lập trình Google, còn Netbeans thì plugin cho Android vẫn chưa hoàn thiện
Eclipse
Netbeans
Tiện thể mình nói luôn, mình học Android theo 2 cuốn Professional Android Application Development và Unlocking Android. Cả 2 cuốn đều dành cho beginner nhưng cuốn đầu code nhiều, giải thích ít, cuốn thứ 2 giải thích rõ ràng hơn. Nếu có ai có ý định tham khảo thì nên đọc cuốn UA trước để hiểu rõ hơn Android, sử dụng cuốn PAAD trong việc tham khảo các đoạn code cho lập trình.
Understanding Android Application:
Việc hiểu được các thành phần (component) tạo nên một ứng dụng Android là rất cần thiết cho việc lập trình. Các thành phần này được chia làm 6 loại bao gồm:
1.Activity: hiểu một cách đơn giản thì Activity là nền của 1 ứng dụng. Khi khởi động 1 ứng dụng Android nào đó thì bao giờ cũng có 1 main Activity được gọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác.
2.Service: thành phần chạy ẩn trong Android. Service sử dụng để update dữ liệu, đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng thấy.
3.Content Provider: kho dữ liệu chia sẻ. Content Provider được sử dụng để quản lý và chia sẻ dữ liệu giữa các ứng dụng.
4.Intent: nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các thông báo đi nhằm khởi tạo 1 Activity hay Service để thực hiện công việc bạn mong muốn. VD: khi mở 1 trang web, bạn gửi 1 intent đi để tạo 1 activity mới hiển thị trang web đó.
5.Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới. VD: bạn viết 1 chương trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần 1 BR để nhận biết các Intent là các cuộc gọi tới.
6.Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động.

Activity, Service, Broadcast Receiver và Content Provider mới là những thành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trong AndroidManifest (tham khảo bài 2 có giới thiệu đầy đủ về file này).

Understanding Android Application Life Cycle:
Android có cơ chế quản lý các process theo chế độ ưu tiên. Các process có priority thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài nguyên.
1.Foreground process: là process của ứng dụng hiện thời đang được người dùng tương tác.
2.Visible process: là process của ứng dụng mà activity đang hiển thị đối với người dùng (onPaused() của activity được gọi).
3.Service process: là Service đang running.
4.Background process: là process của ứng dụng mà các activity của nó ko hiển thị với người dùng (onStoped() của activity được gọi).
5.Empty process: process không có bất cứ 1 thành phần nào active.
Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động kill process, trước tiên là các empty process.

Android Activity Life Cycle:
Như mình đã giới thiệu ở trên , Actitvity là thành phần quan trọng nhất và đóng vai trò chính trong xây dựng ứng dụng Android. Hệ điều hành Android quản lý Activity theo dạng stack: khi một Activity mới được khởi tạo, nó sẽ được xếp lên đầu của stack và trở thành running activity, các Activity trước đó sẽ bị tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng.

Activity bao gồm 4 state:
active (running): Activity đang hiển thị trên màn hình (foreground).
paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus). VD: một activity mới xuất hiện hiển thị giao diện đè lên trên activity cũ, nhưng giao diện này nhỏ hơn giao diện của activity cũ, do đó ta vẫn thấy được 1 phần giao diện của activity cũ nhưng lại không thể tương tác với nó.
stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop
killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo nguyên tắc ưu tiên. Các Activity ở trạng thái stop hoặc pausedcũng có thể bị giải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục hồi lại trạng thái trước đó.

Biểu đồ miêu tả Activity state


Vòng đời của Activity:
Entire lifetime: Từ phương thức onCreate( ) cho tới onDestroy( )
Visible liftetime: Từ phương thức onStart( ) cho tới onStop( )
Foreground lifetime: Từ phương thức onResume( ) cho tới onPause( )

Khi xây dựng Actitvity cho ứng dụng cần phải viết lại phương thức onCreate( ) để thực hiện quá trình khởi tạo. Các phương thức khác có cần viết lại hay không tùy vào yêu cầu lập trình.
XML trong Android:
Không giống như lập trình java thông thường, lập trình android ngoài các lớp được viết trong *.java còn sử dụng XML để thiết kế giao diện cho ứng dụng. Tất nhiên bạn hoàn toàn có thể thiết kế 1 giao diện như ý muốn mà không cần tới bất cứ 1 dòng XML nào, nhưng sd XML sẽ đơn giản công việc đi rất nhiều. Đồng thời sd XML sẽ giúp việc chỉnh sửa ứng dụng sau này trở nên dễ dàng.

Về nguyên tắc, khi lập trình ứng dụng ta thiết kế giao diện bằng XML và cài đặt các xử lý khi tương tác với giao diện trong code.

1 số thành phần cơ bản trong Android:
1.Các layout:
Layout được dùng để quản lý các thành phần giao diện khác theo 1 trật tự nhất định.
- FrameLayout: Layout đơn giản nhất, thêm các thành phần con vào góc trên bên trái của màn hình.
- LinearLayout: thêm các thành phần con theo 1 chiều nhất định (ngang hoặc dọc). Đây là layout được sử dụng nhiều nhất.
- RelativeLayout: thêm các thành phần con dựa trên mối quan hệ với các thành phần khác hoặc với biên của layout.
- TableLayout: thêm các thành phần con dựa trên 1 lưới các ô ngang và dọc.
- AbsoluteLayout: thêm các thành phần con dựa theo tọa độ x, y.

Layout được sử dụng nhằm mục đích thiết kế giao diện cho nhiều độ phân giải. Thường khi lập trình nên kết hợp nhiều layout với nhau để tạo ra giao diện bạn mong muốn.

2.XML unit:
Để hiểu được các thành phần cơ bản của XML cũng như việc sử dụng XML kết hợp với code, ta sẽ đi xây dựng thử một chương trình đơn giản.

Yêu cầu: Xây dựng 1 ứng dụng cho phép gõ 1 nội dung vào rồi hiển thị ra nội dung đó ở bên dưới.

B1: Khởi tạo 1 project (ở đây sử dụng Eclipse để minh họa).
Vào thẻ File -> New -> Android Project. Nếu bạn mới lập trình Android lần đầu thì có lẽ dòng Android Project sẽ không hiện ra, khi đó xuống phía cuối chọn Other rồi vào Android -> Android Project.

B2: Điền thông tin cho project 
Project name: Example 1
Build Target: Chọn Android 1.5 (mới nhất là 2.1 nhưng hiện tại bạn chưa cần quan tâm)
Application name: Example 1
Package name: at.exam
Create Activity: Example
=> Kích nút Finish.
B3: Bên khung Package Explore bên trái đi tới thư mục res, bạn sẽ thấy có 3 thư mục con:
- drawable: thư mục chứa các hình ảnh để làm icon hoặc tài nguyên cho giao diện...
- layout: chứa các file xml để thiết kế giao diện.
- values: chứa các giá trị sử dụng trong ứng dụng được bạn định nghĩa, như các dòng ký tự (string), các màu (color), các themes...

B4:Vào thư mục layout, chọn file main.xml và gõ đoạn code sau vào thay cho toàn bộ nội dung có sẵn (Eclipse hỗ trợ kéo thả cho xml nhưng theo mình không nên sử dụng):
code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <EditText
        android:id="@+id/edit_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/edit_hint"
    />
    <TextView 
        android:id="@+id/text_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/text_color"
        android:textSize="28px"
        android:typeface="monospace"
    />
</LinearLayout>
Trong đoạn XML này chúng ta khai báo một Linear Layout với 2 thành phần con của nó là 1 Edit Text (dùng để gõ xâu ký tự) với 1 Text View (hiển thị xâu ký tự). Linear Layout được khai báo với từ khóa orientation nhằm chỉ ra chiều sắp xếp của 2 thành phần con là chiều dọc. Còn với layout_widthlayout_height các bạn có thể cho giá trị bằng "fill_parent" hoặc "wrap_content" để thông báo thành phần này sẽ có chiều rộng (dài) phủ đầy thành phần cha hoặc chỉ vừa bao đủ nội dung.
Trong Edit Text và Text View các bạn có thể thấy có từ khóa id, từ khóa này cho phép khai báo id của các thành phần để lấy về trong code (sẽ đề cập sau).
Ngoài ra từ khóa hint trong Edit Text cho phép hiện ra phần nội dung mờ khi Edit Text vẫn chưa có ký tự nào. "@string/edit_hint" thông báo lấy trong file strings.xml xâu có tên là edit_hint.
Còn textColor của Text View thì thông báo đoạn ký tự sẽ được hiển thị với màu lấy trong file colors.xml, textSize chỉ ra cỡ chữ bằng 28 pixel và typeface chỉ ra kiểu chữ là monospace

B5:Vẫn trong thư mục res, vào values và chọn file strings.xml. Bố sung thêm dòng định nghĩa cho edit_hint như sau:
?
code
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Example!</string>
    <string name="app_name">Example 1</string>
    <string name="edit_hint">Enter the work here</string>
</resources>
B6:Trong thư mục values, tạo file colors.xml (chuột phải vào thư mục, chọn New -> Android XML File, và lưu ý chữ s, không phải là color.xml). Gõ nội dung cho file như sau:
?
code
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="text_color">#ff3300</color>
</resources>
OK, vậy là bạn đã tạo một màu mới cho dòng chữ sẽ được hiển thị trong Text View (ff3300 là mã hexa của màu đỏ). Thực chất bạn hoàn toàn có thể gõ thẳng 
?
code
1
android:textColor="#ff3300"
trong file main.xml mà không cần tạo mới file colors.xml, nhưng mục đích của XML trong Android chính là để hỗ trợ nâng cấp chỉnh sửa dễ dàng. Nếu sau này bạn muốn sửa màu của dòng text thì chỉ cần vào colors.xml thay đổi thay vì mò mẫm trong main.xml (có thể rất dài nếu giao diện phức tạp).

Các thành phần trên mới chỉ là các phần cơ bản của XML. Ngoài ra các bạn có thể khai báo thêm về Animation, Style và Theme (phức tạp hơn nhiều nên mình không giới thiệu trong phần cơ bản này).
B7: Vậy là chúng ta đã hoàn thiện phần giao diện với XML, giờ đến viết code để xử lý các sự kiện cho các thành phần:
=> vào thư mục src (source code của project) => at.exam => Example.java, gõ nội dung code sau vào:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package at.exam;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
import android.widget.TextView;
public class Example extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         
        //Thiết lập giao diện lấy từ file main.xml
        setContentView(R.layout.main);
         
        //Lấy về các thành phần trong main.xml thông qua id
        final EditText edit = (EditText) findViewById(R.id.edit_text);
        final TextView text = (TextView) findViewById(R.id.text_view);
         
        //Thiết lập xử lý cho sự kiện nhấn nút giữa của điện thoại
        edit.setOnKeyListener(new OnKeyListener() {           
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == KeyEvent.ACTION_DOWN
                        && keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
                    text.setText(edit.getText().toString());
                    edit.setText("");
                    return true;                   
                }
                else {
                    return false;
                }
            }
             
        });
    }
}


Dạo qua một chút kiến thức cơ bản: Trong Android, các lớp sử dụng để tạo giao diện (Edit Text, Text View...) đều là lớp con của lớp View. Một số lớp thường xuyên được sử dụng để tạo giao diện:
- TextView
- EditText
- ListView
- Spinner
- CheckBox
- Button
- RadioButton
Ngoài ra bạn còn có thể tạo 1 View riêng của mình bằng cách kế thừa View có sẵn.

Các Listener được sử dụng để bắt 1 sự kiện nào đó. Ở đây mình sử dụng OnKeyListener dùng để bắt sự kiện khi nhấn 1 phím của điện thoại. Ngoài ra thường sử dụng OnClickListener để bắt sự kiện chạm vào 1 View đang hiển thị trên màn hình. Mỗi View đều phải set Listener riêng để xử lý cho sự kiện tương tác với nó, và mỗi loại View cũng lại có những Listener dành riêng cho nó (VD: CheckBox có OnCheckChangedListener)
Ở đây mình sử dụng hàm dạng inner để định nghĩa xử lý cho OnKeyListener nên có thể mọi người không quen lắm, nhưng nó cũng nằm trong phần cơ bản của Java đấy nhé.

Đề nghị lưu ý thêm phần R.id.edit_text. Để lấy hoặc truy nhập các thành phần ta đã định nghĩa trong XML ta phải sử dụng R.* như R.layout.main, R.id.edit_text. Lệnh findViewById sẽ trả về 1 View có Id thiết lập trong phần XML. Do View là lớp cha của EditText với TextView nên ở đây ta phải ép kiểu.
Ngoài ra các string hay color cũng có thể lấy về bằng lệnh getResource() . Vd: getResource().getColor(R.color.text_color)

B8: Chạy chương trình. Chọn Run => Android Application và chờ cho emulator khởi động nhé. Ai có 1 Android thật có thể kết nối qua USB và thử nghiệm luôn. Tự chỉnh sửa trong code và trong XML để hiểu thêm về lập trình Android.
VD:
?
code
1
2
3
4
5
6
7
8
edit.setOnClickListener(new OnClickListener() {           
                        @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 
            }
             
        });
hoặc trong XML thêm vào phần Text View 
?
code
1
android:textSize="50px"
để xem chương trình thay đổi như thế nào nhé ^_^
                                                                                                 Nguồn:veda.com.vn