Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
265,95 KB
Nội dung
andbook – Android Programing (Vietnamese version – anhtn.bk@gmail.com) Lời nói đầu / Đọc tài liệu Tài liệu viết cho nhà phát triển làm việc với ứng dụng Java trước muốn bắt đầu với tảng Android Tôi cố gắng tạo sổ tay, lưu giữ đoạn mã ví dụ nơi mà phù hợp Ngồi ra, tơi cố gắng chèn nhiều hình ảnh chúng làm cho trình học tập trở nên sống động thư giãn mắt người đọc Nhưng thật không may, lập trình khơng phải tất cả; có số thứ tảng Android cần phải học để hiểu cách đầy đủ Đây mơ tả trang tài liệu Thực khơng cần thiết phải đọc tất trang tài liệu này, nhiên lợi ích Bạn dùng kiểu tài liệu tham khảo Những bạn đọc giải thích chúng xuất trình tiến trình thực thi thực tế (“hands-on” – process) Tất đoạn mã bạn thấy tài liệu (bao gồm workspace chúng) lấy tại: http://andbook.anddev.org/sources/ Giới thiệu Open Handset Alliance phát hành Google Android SDK vào ngày 12/11/2007, vài tuần sau giới thiệu Sự kiện gây nên tác động tin nổi, trang tin tức IT bị lấn át thông tin việc phát hành SDK – Google Group tràn ngập với 2000 thông điệp hai ngày Ý tưởng tảng Android làm sửng sốt người khóa học thu hút nhiều nhiều lập trình viên ngày Đặc biệt, kiến trúc mở dựa Intents khả thay Home-application (các ứng dụng mặc định cho tác vụ hệ điều hành) tạo tảng thực mềm dẻo Android – GPhone ? Một vài tuần vài tháng trước Google phát hành Android SDK có nhiều tin đồn thứ gọi GPhone Nó nói thiết bị chế tạo Google cung cấp tính liên lạc miễn phí cách hiển thị nội dung quảng cáo phụ thuộc vào hoàn cảnh tới người dùng thiết bị Nhưng vào 5/11/2007 Andy Rubin (trưởng nhóm phát triển Android) nói : “Nền tảng Android có tham vọng giá trị nhiều điện thoại” powered by anddev.org Page Google với Open Handset Alliance (OHA) tạo hệ thống phần mềm hoàn chỉnh cho thiết bị di động: hệ điều hành, thành phần giao tiếp phần cứng ứng dụng di động Những cơng bố vài tuần sau chưa phải sản phẩm cuối cùng, với “First Look SDK” có nhiều thứ chưa thực Các trang tin tức đưa tin khó chịu vài nhà phát triển nói Android có nhiều bug thiếu tài liệu tham khảo (documentation) Nhưng hầu hết nói Android khơng có nhiều bug tảng phần mềm khác mức độ Android from above Cùng nhìn nhận đặc điểm mà OHA làm bật tảng Android: Tính mở “Android xây dựng từ lên phép nhà phát triển tạo ứng dụng di động hấp dẫn mang đầy đủ lợi ích thiết bị cầm tay Nó xây dựng hồn tồn mở Ví dụ, ứng dụng gọi tới vài chức điện thoại thực gọi, gửi tin nhắn văn bản, sử dụng camera, cho phép nhà phát triển tạo ứng dụng phong phú cho người dùng.” Điều đúng, nhà phát triển bạn làm thứ, từ gửi tin nhắn ngắn gọn với dòng code tới thay hình giao diện thiết bị bạn Có thể dễ dàng tạo hệ điều hành hoàn toàn tùy biến vài tuần, cung cấp tính mà ứng dụng mặc định Google khơng có tới người dùng “Android xây dựng dựa nhân Linux Ngồi ra, sử dụng máy ảo riêng thiết kế để tối ưu hóa việc sử dụng nhớ tài nguyên phần cứng môi trường di động Android mã nguồn mở, tùy ý mở rộng để thêm vào công nghệ Nền tảng tiếp tục phát triển với nhà phát triển để xây dựng nên ứng dụng di động sáng tạo, mẻ hơn.” Ở đây, Google nói gọi máy ảo Dalvik (DalvikVM), máy ảo register-based, thiết kế Dan Bornstein kĩ sư khác Google, thành phần quan trọng tảng Android Nói cách khác, “register-based” mà nói đầu khác so với máy ảo Java thông thường (trên hệ thống Windows, Linux… Sun) Tất ứng dụng tạo giống “Android khơng có khác ứng dụng điện thoại (phone’s core apps) ứng dụng bên thứ ba Tất chúng xây dựng để truy cập theo cách thức giống tới tính điện thoại để cung cấp cho người dùng dải ứng dụng dịch vụ phong phú Với thiết bị xây dựng tảng Android, người dùng có tồn quyền tùy chỉnh điện thoại cho phù hợp sở thích họ Họ thay đổi hình nền, cách hiển thị quay số vài ứng dụng Thậm chí họ cài đặt để điện thoại sử dụng ứng dụng xem ảnh yêu thích họ để hiển thị cho tất ảnh thay cho ứng dụng mặc định hệ điều hành.” Một lần nữa, tất điều Các nhà phát triển tùy chỉnh 100% thiết bị Android Hệ thống liên lạc Android dựa gọi Intents, nhiều một hành động cần xử lý Một ví dụ cho điều là: “android.provider.Telephony.SMS_RECEIVED” One can simply listen on that Intent by writing about lines of definitions (không hiểu phải dịch ? :D) Hệ thống sau nhận có nhiều ứng dụng muốn xử lý Intent đề nghị người dùng lựa chọn thứ mà cô ta thích để xử lý Intent Phá vỡ rào cản ứng dụng “Android phá vỡ rào cản để xây dựng ứng dụng sáng tạo Ví dụ, nhà phát triển kết hợp thông tin từ trang web với liệu thiết bị di động danh bạ người dùng, lịch, vị trí địa lý để cung cấp kinh nghiệm xác tới người dùng Với Android, nhà phát triển xây dựng ứng dụng cho phép người dùng xem vị trí bạn bè họ thông báo họ vùng lân cận để có hội gặp Nhanh chóng dễ dàng phát triển ứng dụng “Android cung cấp lượng lớn thư viện công cụ hữu ích sử dụng để xây dựng ứng dụng phong phú Ví dụ, Android cho phép nhà phát triển lấy thông tin địa điểm thiết bị, cho phép thiết bị giao tiếp với peer-topeer social applications Ngoài ra, Android bao gồm tập công cụ xây dựng từ tảng để cung cấp cho nhà phát triển khả can thiệp sâu vào hệ thống, tạo ứng dụng có hiệu suất cao.” Kh Web 2.0 phát triển, việc tạo ứng dụng với nội dung phong phú vòng vài phút điều hồn tồn Android mang tới phát triển với tốc độ khơng tưởng Cùng xem xét ví dụ: Một ngày tơi tình cờ biết đến ứng dụng Buzzword “DrivingDirections” Android Documentation Quá trình phát triển ứng dụng ảnh (xem tài liệu gốc) khoảng ½ (bao gồm giao diện người dùng đơn giản tất ảnh mà bạn thấy) Có thể tạo ứng dụng phức tạp tảng di động khác ? – Khơng Ngồi ứng dụng cải tiến với vị trí GPS thiết bị cách xử lý vài dòng code Google làm bật sức mạnh Android việc cung cấp dịch vụ định vị Google Maps hồn tồn mượt mà Android thể phát triển cho Android Nó hồn tồn hỗ trợ phóng to cho phép kéo thả đồ cách thêm ba ký tự đoạn mã Java ứng dụng Android mặc định ba dòng mã XML Một đặc tính thú vị khác dễ dàng sử dụng với Android Animations trình chiếu đa phương tiện Từ phiên m5, Android SDK chứa hàm cho phép phát liệu định dạng GeoCoding, sau mở rộng cho mp3, ogg-Vorbis, MIDI số định dạng khác Dalvik.equals(Java) == false Tại “Dalvik” ? Máy ảo Dalvik đặt Bornstein theo tên làng chài Iceland, nơi tổ tiên ông sống Như bạn biết phần đầu, Dalvik tên máy ảo Android Nó máy ảo thông dịch thực thi file định dạng thực thi Dalvik (Dalvik Executable *.dex), định dạng tối ưu hóa cho lưu trữ sử dụng nhớ hiệu Đây máy ảo register-based, chạy class biên dịch trình biên dich Java chuyển thành định dạng tương thích với công cụ “dx” Máy ảo chạy mức nhân Linux 2.6 dựa chức phía hệ thống (giống luồng trình quản lý nhớ mức thấp) DalvikVM tối ưu hóa để chạy đa thể với very low memoryfootprint Một vài máy ảo cung cấp chế bảo vệ ứng dụng chúng không bị ảnh hưởng ứng dụng gặp lỗi khác Sự khác biệt với máy ảo Java thông thường Máy ảo Java tìm thấy hầu hêt máy tính ngày stack-based VM DalvikVM khác, register-based, vi xử lý di động tối ưu hóa cho thao tác register-based Máy ảo register-based cho phép thời gian thực thi nhanh The Android Code Challenge (ADC) The ADC ý tưởng Google khuyến khích cộng đồng xây dựng ứng dụng hấp dẫn cho tảng Android cách trao giải cho 50 ứng dụng thu hút nhiều Tất nhiên, ADC với 10 triệu đô la tiền thưởng thực hấp dẫn với nhà phát triển phần mềm để tạo ứng dụng thực hữu ích Tạo ứng dụng Android Trong chương tìm hiểu cách tạo ứng dụng Android Giải phẫu ứng dụng Android Có bốn thành phần việc xây dựng ứng dụng Android: - Activity Intent Receiver Service Content Provider Không phải ứng dụng cần bốn phần trên, ứng dụng bạn viết kết hợp vài phần chúng Một bạn định thành phần bạn cần cho ứng dụng mình, bạn nên liệt kê chúng file gọi AndroidManifest.xml Đây file XML nơi bạn khai báo thành phần ứng dụng tính yêu cầu chúng Chúng ta sớm đề cập tới mà AndroidManifest.xml chịu trách nhiệm Activity Activities thành phần thường sử dụng bốn thành phần xây dựng ứng dụng Android Một activity thông thường screen ứng dụng bạn Mỗi activity thực thi lớp kế thừa từ lớp sở Activity Lớp bạn hiển thị giao diện người dùng bao gồm View trình đáp ứng kiện Hầu hết ứng dụng chứa nhiều screen Ví dụ, ứng dụng tin nhắn văn có screen hiển thị danh sách tài khoản để gửi tin nhắn đi, screen thứ hai để viết tin nhắn tới tài khoản chọn, screen khác để hiển thị tin nhắn cũ thay đổi cài đặt Mỗi screen cài đặt activity Di chuyển sang screen khác thực chất bắt đầu activity Trong vài trường hợp Activity trả giá trị tới activity trước – ví dụ activity cho phép người dùng chọn ảnh trả ảnh chọn tới người gọi Khi screen mở ra, screen trước tạm dừng đưa vào history stack Người dùng di chuyển ngược lại tới screen trước mở lịch sử Các screen chọn xóa hẳn khỏi history stack khơng phù hợp chúng trở lại Android ghi nhớ lại history stack cho ứng dụng nạp từ hình Intent Intent Filters Android sử dụng lớp đặc biệt gọi Intent để di chuyển từ screen sang screen khác Intent mô tả mà ứng dụng muốn làm Hai thành phần quan trọng của cấu trúc liệu intent hành động liệu Các giá trị đặc trưng cho hành động MAIN, VIEW, PICK, EDIT … Dữ liệu lưu giữ dạng URI Ví dụ, để hiển thị website trình duyệt, bạn tạo Intent với hành động VIEW tập liệu tới Website-URI New Intent(android.content.Intent.VIEW_ACTION, ContentURI.create(http://anddev.org)); Có lớp liên kết gọi IntentFilter Trong intent có tác dụng yêu cầu làm cơng việc đó, intent filter mơ tả mà intents activity có khả xử lý Một activity hiển thị thông tin liên lạc cho người công bố IntentFilter nói biết làm để xử lý hành động VIEW nhận liệu mô tả người Các activity cơng bố IntentFilter chúng AndroidManifest.xml file Di chuyển screen hoàn toàn phụ thuộc vào việc giải intent Để di chuyển tiến, activity gọi startActivity(myIntent) Hệ thống sau tìm kiếm intent filter cho tất ứng dụng cài đặt chọn lấy activity mà intent filter phù hợp với myIntent Activity thông báo nội dung intent, ngun nhân mà đưa Trình giải intent xuất thời điểm chạy startActivity gọi, có hai lợi ích: - Các activity tái sử dụng chức từ thành phần khác đơn giản cách tạo yêu cầu form Intent Các activity thay lúc Activity với IntentFilter tương đương Intent Receiver Bạn sử dụng IntentReceiver bạn muốn đoạn mã ứng dụng thực để phản ứng lại kiện từ bên ngoài, ví dụ, chng điện thoại kêu, liệu mạng nhận, vào lúc nửa đêm Intent receiver không hiển thị UI, chúng hiển thị Notification để thơng báo cho người dùng vài thứ xuất Intent receiver đăng ký AndroidManifest.xml, bạn đăng ký chung từ code sử dụng Context.registerReceiver() Ứng dụng bạn không cần thiết phải chạy để intent receiver gọi; hệ thống khởi động ứng dụng bạn, cần, intent receiver kích hoạt Các ứng dụng gửi quảng bá intent chúng tới ứng dụng khác với Content.broadcastIntent() Service Một Service đoạn mã long-lived chạy mà khơng cần có UI Một ví dụ tốt service media player phát hát từ playlist Trong ứng dụng media player, chắn có nhiều activity cho phép người dùng chọn hát phát chúng Tuy nhiên, music playback thân chúng không nên xử lý activity người dùng mong muốn nhạc tiếp tục phát chuyển sang screen Trong trường hợp này, media player activity bắt đầu service sử dụng Context.startService() để chạy ngầm giữ cho hát phát liền mạch Hệ thống giữ cho music playback service chạy hồn thành (bạn học thêm quyền ưu tiên cho service hệ thống cách đọc Life Cycle of an Android Application) Chú ý bạn cần kết nối tới service (và bắt đầu nó chưa bắt đầu) với phương thức Context.bindService() Khi kết nối tới service, bạn giao tiếp với thơng qua giao diện cung cấp service Ví dụ với music service, giao diện cho phép bạn tạm dừng, tiếp tục phát hát … Content Provider Các ứng dụng chưa liệu chúng file, CSDL SQL thu gọn, vài chế khác Tuy nhiên, content provider lại hữu dụng bạn muốn liệu ứng dụng chia sẻ với ứng dụng khác Một content provider lớp thực thi tập phương thức chuẩn cho phép ứng dụng khác lưu trữ lấy kiểu liệu xử lý content provider Android User Interface UI Android xây dựng theo hai cách, định nghĩa mã XML viết mã Java Định nghĩa cấu trúc giao diện XML khuyến cáo tn theo mơ hình Model-View-Control – quy định giao diện nên tách rời với phần chương trình logic Ngồi ra, với mã XML việc đáp ứng giao diện chương trình với hình độ phân giải khác dễ dàng nhiều Định nghĩa UI XML đơn giản tạo tài liệu HTML thông thường Hãy xem Android’s XML-Layouts Mọi thành phần có cấu trúc chặt chẽ mở rộng theo cấu trúc cây: Cấu trúc phân cấp thành phần Screen Thành phần thực thi ứng dụng Android activity – đối tượng lớp android.app.Activity Một activity làm nhiều thứ, thân chúng khơng có diện screen Để làm cho activity bạn có screen presence (sự diện hình) thiết kết giao diện cho nó, bạn cần làm việc với view viewgroups – thành phần giao diện người dùng sử dụng Android Views Một view đối tượng kế thừa từ lớp sở android.view.View Nó cấu trúc liệu mà thuộc tính chứa layout nội dung cho vùng hình chữ nhật xác định hình Một đối tượng View xử lý measuring, layout, drawing, thay đổi focus, scrolling hành động tác động lên vùng hình mà biểu diễn Lớp View dùng lớp sở cho tất widget – tập lớp đươc thực thi đầy đủ để vẽ thành phần tương tác hình Các Widget xử lý measuring drawing chúng, bạn sử dụng chúng để xây dựng giao diện bạn nhanh Danh sách widget sử dụng như: TextView, EditText, Button, RadioButton, Checkbox, ScrollView, … Viewgroups Một viewgroup đối tượng lớp android.view.Viewgroup Giống tên ra, viewgroup kiểu đặc biệt đối tượng view mà chức chứa quản lý tập view viewgroup con, Viewgroup cho phép bạn thêm kết cấu cho giao diện bạn xây dựng thành phần screen phức tạp thực thể đơn Lớp Viewgroup lớp sở cho layout, tập lớp thực thi đầy đủ để cung cấp kiểu bố trí hình thông thường Các layout mang tới cho bạn cách để xây dựng cấu trúc cho tập view A Tree-Structured UI Trên tảng Android, bạn định nghĩa giao diện người dùng Activity sử dụng nút view viewgroup, hiển thị sơ đồ Cây đơn giản hay phức tạp tùy vào bạn cần để tạo nó, bạn xây dựng sử dụng tập widget layout xây dựng sẵn Android kiểu view tùy chỉnh bạn tạo Để gắn hiển thị tới screen, Activity bạn gọi phương thức setContentView() đưa vào tham chiếu tới đối tượng nút gốc Một hệ thống Android tham chiếu tới đối tượng nút gốc, làm việc trực tiếp với nút để làm vẽ hiển thị cụ thể Khi Activity bạn kích hoạt nhận focus, hệ thống thơng báo tới activity bạn yêu cầu nút gốc đánh giá vẽ Nút gốc sau yêu cầu nút tự vẽ chúng lần lượt, nút viewgroup chịu trách nhiệm việc vẽ nút trực tiếp Như nhắc tới phần trước, view group chịu trách nhiệm đánh giá vùng trống cho phép nó, layout nó, gọi tới draw() phép tự vẽ Nút u cầu kích thước vị trí cha, đối tượng có định cuối kích thước vị trí So sánh thành phần giao diện Android Java Swing Một vài nhà phát triển đọc tài liệu làm việc với thành phần giao diện Swing trước đưa vài giống Android Java Swing: - Các Activity Android gần giống với JFrame Swing Views JComponent TextViews JLabel EditTexts JTextField Button JButton Thiết lập lắng nghe kiện tới View giống Android Swing: // Android myView.setOnClickListener(new OnClickListener(){ // Swing myButton.addActionListener(new ActionListener() { File AndroidManifest.xml AndroidManifest.xml file cần thiết cho ứng dụng Android Nó chứa thư mục root ứng dụng, mô tả giá trị toàn cục cho package bạn, bao gồm thành phần ứng dụng (activity, service, etc) mà package công khai với bên ngoài, kiểu liệu cho Activity xử lý, làm để chúng kích hoạt Một điều quan trọng đề cập tới file IntentFilter Các lọc mơ tả nơi activity bắt đầu Khi acivity (hoặc hệ điều hành) muốn thực thi hành động mởm ột trang Web mở hình lựa chọn danh bạ, tạo đối tượng Intent Đối tượng intent giữ số thơng tin mơ tả bạn muốn làm, liệu cần thiết để hồn thành với số thơng tin khác Android so sánh thơng tin đối tượng Intent với intent filter công bố ứng dụng tìm kiếm activity thích hợp để xử lý liệu thực thi hành động đặc biệt người gọi Nếu có nhiều ứng dụng có khả xử lý Intent này, người dùng nhận đề nghị lựa chọn ứng dụng mà muốn sử dụng để xử lý Ngoài ra, file mô tả Activity, Content Provider, Service, Intent Receiver, bạn xác định quyền hạn AndroidManifest.xml Một file AndroidManifest.xml đơn giản có dạng sau : - - - Hầu file AndroidManifest.xml chứa mô tả không gian tên (namespace) (xmlns:android=http://schemas.android.com/apk/res/android) thành phần Mơ tả cho phép sử dụng loạt thuộc tính (các attribute XML element) chuẩn đa dạng Android, thuộc tính hữu ích sử dụng để cung cấp liệu cho hầu hết thành phần file Hầu hết manifest bao gồm tag chứa vài tag mô tả Application, IntentReceiver, etc… sử dụng ứng dụng Nếu bạn muốn tạo Acitivity cho phép kích hoạt trực tiếp thông qua người dùng, bạn cần phải để hỗ trợ MAIN action LAUNCHER category Kết hình : Sau danh sách chi tiết cấu trúc tập tin AndroidManifest.xml, mô tả tất có sẵn, với ví dụ tương ứng: Đây nút gốc file AndroidManifest.xml Nó chứa thuộc tính gói (packageattribute), tới vài package phía ngồi Activity Các đường dẫn cho Activity đường dẫn tương đối dựa giá trị package-attribute Mô tả cho phép bảo mật mà package bạn cần phải cấp phép hoạt động cách xác (ví dụ bạn muốn gửi SMS sử dụng danh bạ điện thoại) Các quyền hạn cấp người dùng suốt trình cài đặt ứng dụng bạn Mơ tả cho phép bảo mật sử dụng để hạn chế ứng dụng truy cập vào thành phần tính package bạn (hoặc khác) Số lượng: 0+ Mô tả mã thành phần thiết bị có sẵn để kiếm tra tính gói gói khác Số lượng: 0+ Thành phần gốc chứa mô tả thành phần mức ứng dụng chứa package Thành phần bao gồm thuộc tính tồn cục và/hoặc thành phần mặc định ứng dụng label, icon, theme, quyền hạn cần có, etc Số lương: Bạn có 0+ cho thành phần sau : Activity thành phần ứng dụng để tương tác với người dùng Màn hình ban đầu người dùng nhìn thấy kích hoạt ứng dụng activity, hầu hết hình khác họ sử dụng cài đặt activity riêng biệt mô tả với tag activity Chú ý: activity phải có tag manifest cho dù cơng khai với giới bên ngồi hay có ý định sử dụng package Nếu Activity khơng có tag tương ứng manifest, bạn khơng thể kích hoạt hay sử dụng Tùy chọn, để hỗ trợ tìm kiếm muộn vào thời gian chạy, bạn thêm 1+ thành phần để mô tả action mà activity hỗ trợ Mô tả kiểu Intent mà component hỗ trợ Các giá trị kiểu khác xác định thành phần này, thuộc tính lấy từ để cung cấp label, icon, thông tin khác cho hành động mô tả Một kiểu action mà component hỗ trợ Ví dụ: Một kiểu category component hỗ trợ Ví dụ: Một kiểu MIME (xem MIME-header Internet để biết thêm), URI scheme, URI authority URI path mà component hỗ trợ Bạn thêm 1+ thành phần meta-data activity bạn: Thêm mảnh thông tin liệu cho activity để client lấy thơng qua ComponentInfo.metaData (gần giống metadata HTML document) Một IntentReceiver cho phép ứng dụng lắng nghe thay đổi liệu hành động xảy ra, khơng chạy Giống với activity tag, bạn tùy chọn thêm 1+ thành phần mà receiver hỗ trợ giá trị , chúng có ý nghĩa tương tự với đặt Một Service thành phần chạy ngầm khoảng thời gian Giống với activity tag, bạn tùy chọn thêm nhiều thành phần mà service hỗ trợ giá trị Một ContentProvider thành phần quản lý bảo đảm toàn vẹn liệu xuất cho phép ứng dụng khác truy cập tới chúng Bạn tùy chọn thêm nhiều giá trị giống Dĩ nhiên, tag cần cố tag đóng đóng trực tiếp Resources and the magic R.java Các tài nguyên dự án file R.java có quan hệ chặt chẽ với Các tài nguyên (Resources) Các tài nguyên file mở rộng (không phải file mã nguồn) sử dụng đoạn mã ứng dụng bạn biên dịch vào ứng dụng giai đoạn biển dịch Android hỗ trợ số lượng kiểu file khác bao gồm: XML, PNG JPEG file Các file XML có nhiều định dạng khác tùy thuộc vào mà chúng mơ tả Các tài ngun nằm ngồi mã nguồn, file XML biên dịch thành dạng nhị phân, định dạng cho phép nạp nhanh chóng để tăng hiệu suất Các chuỗi nén thành dạng để sử dụng hiệu Danh sách tài nguyên Các kiểu tài nguyên nơi mà chúng đặt: - Các file lay-out -> “/res/layout/” Images -> “/res/drawable/ Animations -> “/res/anim/” Styles, strings, arrays -> “/res/values/” : định nghĩa file XML Raw file mp3 video -> “/res/raw/” Sử dụng tài nguyên code: Sử dụng tài nguyên code vấn đề cần phải biết tham chiếu đầy đủ tới ID tài nguyên kiểu đối tượng mà tài nguyên bạn biên dịch Đây cú pháp tham chiếu tới tài nguyên: android.R.resource_type.resource_name R.resource_type.resource_name resource_type lớp R giữ kiểu xác định resource.resource_name tên thuộc tính cho tài nguyên định nghĩa file XML tên file (khơng có phần mở rộng) cho tài nguyên định nghĩa kiểu file khác Mỗi kiểu tài nguyên thêm vào thành lớp xác định lớp R, phụ thuộc vào kiểu tài nguyên Các tài nguyên biên dịch ứng dụng bạn tham chiếu tới mà khơng cần có tên package (đơn giản R.resource_type.resource_name) Android chứa số tài nguyên chuẩn screen style button background Để tới chúng code, bạn phải xác định chúng với thị gói android đầu, ví dụ sau: android.R.drawable.button_background Tham chiếu tới tài nguyên Một giá trị cung cấp thuộc tính (hoặc tài ngun) tham chiếu tới tài nguyên khác Đây cách thường xuyên sử dụng file layout để cung cấp chuỗi (mà chúng định vị được) image (tồn file khác), tham chiếu loại tài nguyên bao gồm color số ngun Ví dụ, có tài nguyên màu, viết file layout chứa thiết lập kích thước màu văn giá trị chứa tài nguyên khác: Chú ý việc sử dụng tiền tố ‘@’ để tới tài nguyên tham chiếu, theo sau tên tài nguyên tham chiếu dạng @[package:]type/name Trong trường hợp khơng xác định rõ package tham chiếu tới tài nguyên package (package ứng dụng) Để tham chiếu tới tài nguyên hệ thống, bạn cần phải viết: Một ví dụ khác, bạn ln ln nên sử dụng tài nguyên tham chiếu cung cấp chuỗi file layout biết vị trí Alternate Resources & Localization Tài nguyên thay địa phương hóa giải pháp hữu ích bạn thích với Android Giả sử bạn phải thiết kế GUI khớp với khung cảnh định hướng hình lúc – điều gần khơng thể Bạn cung cấp tài nguyên khác cho ứng dụng bạn cho phù hợp với ngơn ngữ giao diện cấu hình phần cứng thiết bị Chú ý bạn thêm vào bao gôm chuỗi, layout, tất tài nguyên khác, SDK không cung cấp phương thức cho phép bạn xác định xác tài nguyên thiết lập để sử dụng Android phát thiết lập riêng phù hợp cho phần cứng vị trí, nạp chúng Chỉ người dùng lựa chọn thiết lập ngơn ngữ thay sử dụng panel cài đặt thiết bị Để bao gồm tài nguyên thay thế, tạo thư mục tài nguyên song song với số qualifier thêm vào tên thư mục để xác định cấu hình mà áp dụng (ví dụ ngơn ngữ, định hướng hình ngang-dọc, dpi, độ phân giải, …) Ví dụ, dự án khác tiếng Anh tiếng Đức: MyApp/ Res/ Values-en/ Strings.xml Values-de/ Strings.xml Android cung cấp vài kiểu qualifier, với giá trị khác Để sử dung, thêm chúng vào cuối tên thư mực ngăn cách dấu gạch ngang Bạn thêm nhiều qualifier cho tên thư mục, chúng phải xuất theo thứ tự chúng liệt kê Ví dụ, thư mục chứa tài nguyên cho vẽ có cấu hình xác định đầy đủ giống sau: MyApp/ res/ drawable-en-rUS-port-92dpi-finger-keyshidden-12key-dpad-480x320/ Thông thường, bạn xác định vài tùy chọn cấu hình cụ thể mà định nghĩa cho tài nguyên Bạn bỏ giá trị từ danh sách hồn chỉnh, miễn giá trị lại theo thứ tự Ví dụ: MyApp/ res/ drawable-en-rUS-finger/ drawable-port/ drawable-port-160dpi/ drawable-qwerty/ Android lựa chọn file tài nguyên phù hợp vào thời gian chạy phụ thuộc cấu hình thiết bị The magic R.java Một file R.java dự án file sinh tự động để đánh mục cho tất tài nguyên dự án bạn Bạn sử dụng lớp mã nguồn cách ngắn gọn để tham chiếu tới tài nguyên bạn thêm vào dự án bạn Điều trở nên mạnh mẽ với tính hồn thành code IDE Eclipse cho phép bạn nhanh chóng tương tác xác định vị trí tham chiếu bạn tìm kiếm Ngồi ra, bạn có thời gian biên dịch an toàn mà tài nguyên bạn muốn sử dụng thực tồn Hello World – The Android way (từ phần sau hướng dẫn cài đặt sử dụng viết ứng dụng HelloWorld nên bỏ qua :D) ... register-based, chạy class biên dịch trình biên dich Java chuyển thành định dạng tương thích với công cụ “dx” Máy ảo chạy mức nhân Linux 2.6 dựa chức phía hệ thống (giống luồng trình quản lý nhớ mức thấp)... Model-View-Control – quy định giao diện ln nên tách rời với phần chương trình logic Ngoài ra, với mã XML việc đáp ứng giao diện chương trình với hình độ phân giải khác dễ dàng nhiều Định nghĩa UI XML... dụ: Một ngày tơi tình cờ biết đến ứng dụng Buzzword “DrivingDirections” Android Documentation Quá trình phát triển ứng dụng ảnh (xem tài liệu gốc) khoảng ½ (bao gồm giao diện người dùng đơn giản