Sunday, May 25, 2014
Lưu trữ trong Android (SQLite)
[Đang thực hiện...]
Lưu trữ trong Android (SharePreference & File)
[Đang thực hiện...]
Spinner, Adapter, ViewHolder, Listview, Gridview
[Đang thực hiện...]
Sunday, May 11, 2014
Menu và Actionbar
Có 2 dạng menu cơ bản trong ứng dụng Android đó là Context Menu và Option Menu (từ các phiên bản Android 4.x trở lên thì có thể hiểu là Action Bar). Trong bài viết này chúng ta sẽ đi tìm hiểu 2 loại menu này.
Các bước để tạo Context Menu
Bước 1: Khai báo menu (tạo mới 1 file menu_phone.xml trong thư mục menu) và viết mã code như bên dưới.
Bước 2: Trong hàm onCreateContextMenu thì đăng ký hiển thị menu xml vừa tạo ở trên.
Bước 3: Trong hàm onContextItemSelected đăng ký xử lý sự kiện khi click lựa chọn trên menu
Bước 4: Đăng ký Context Menu cho một đối tượng trên layout của Activity.
Từ phiên bản Android > 2.3 thì Option Menu được hiểu như Actionbar và trông có dạng như sau:
Để tạo option menu - actionbar ta làm theo các bước như sau:
Bước 1: Khai báo file menu menu_main.xml trong thư mục menu với nội dung như sau:
Bước 2: Trong hàm onCreateOptionsMenu đăng ký sử dụng menu đã viết ở trên.
Source code ví dụ có thể tải tại đây.
Context Menu
Đây là dạng menu hiển thị lựa chọn khi người dùng thao tác với 1 đối tượng trong nhóm đối tượng có cùng tính chất. Ví dụ như khi thao tác chọn với 1 danh sách sinh viên, ta có thể đưa ra context menu với các tùy chọn như: thêm, sửa, xóa, hiển thị chi tiết. Để sử dụng context menu, người dùng cần đăng ký đối tượng cho context menu. Để gọi, người dùng cần bấm giữ đối tượng trong vài giây.Các bước để tạo Context Menu
Bước 1: Khai báo menu (tạo mới 1 file menu_phone.xml trong thư mục menu) và viết mã code như bên dưới.
Bước 2: Trong hàm onCreateContextMenu thì đăng ký hiển thị menu xml vừa tạo ở trên.
getMenuInflater().inflate(R.menu.menu_phone, menu);
Bước 3: Trong hàm onContextItemSelected đăng ký xử lý sự kiện khi click lựa chọn trên menu
@Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item .getMenuInfo(); String name = mContact[info.position]; switch (item.getItemId()) { case R.id.menu_call: Toast.makeText(ContextMenu2Activity.this, "Call to " + name, Toast.LENGTH_SHORT).show(); break; case R.id.menu_sms: Toast.makeText(ContextMenu2Activity.this, "SMS to " + name, Toast.LENGTH_SHORT).show(); break; default: Toast.makeText(ContextMenu2Activity.this, "Do some thing with " + name, Toast.LENGTH_SHORT).show(); break; } return super.onContextItemSelected(item); }
Bước 4: Đăng ký Context Menu cho một đối tượng trên layout của Activity.
registerForContextMenu(listContact);
Option Menu - Actionbar
Đối với các phiên bản Android 2.3 trở về trước, Option Menu trông có dạng như sau:Từ phiên bản Android > 2.3 thì Option Menu được hiểu như Actionbar và trông có dạng như sau:
Để tạo option menu - actionbar ta làm theo các bước như sau:
Bước 1: Khai báo file menu menu_main.xml trong thư mục menu với nội dung như sau:
Bước 2: Trong hàm onCreateOptionsMenu đăng ký sử dụng menu đã viết ở trên.
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); menu.add(1, 999, 999, "Menu 999").setIcon(R.drawable.more); return true; }Bước 3: Trong hàm onOptionsItemSelected đăng ký xử lý sự kiện khi click và item của menu.
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_1: Intent intent_1 = new Intent(MainActivity.this, ContextMenu1Activity.class); startActivity(intent_1); return true; case R.id.menu_2: Intent intent_2 = new Intent(MainActivity.this, ContextMenu2Activity.class); startActivity(intent_2); return true; case R.id.menu_3: return true; case R.id.menu_4: return true; case R.id.menu_5: return true; default: return super.onOptionsItemSelected(item); } }
Source code ví dụ có thể tải tại đây.
Friday, May 9, 2014
Fragment
Tổng quan
Fragment có thể hiểu như là những "mảnh" nội dung độc lập được chèn vào bên trong activity. Chúng ta xem qua một số tình huống bên dưới để hiểu cách Fragment sử dụng trong lập trình Android.Tình huống 1: Trên màn hình ứng dụng chúng ta muốn thể hiện 2 phần nội dụng. Phần 1 hiển thị một danh sách (ListView) các địa chỉ website, phần 2 dùng một WebView để hiển thị nội dung.
![]() |
...hiển thị nội dung website được chọn ở ListView... |
![]() |
...hiển thị nội dung ảnh.. |
![]() |
Hiển thị trên tablet và phone |
Lợi ích
Sử dụng Fragment đem lại những ưu điểm như:- Giúp cho việc tái sử dụng các thành phần trên các layout khác nhau trở nên dễ dàng.
- Hỗ trợ việc hiển thị layout dạng dọc (portrait) hay ngang (landscape) ở trên bất kỳ điện thoại hay máy tính bảng nào.
- Giúp nhà phát triển kiểm soát việc hiển thị cửa sổ đơn (single-pane) trên điện thoại và hiển thị đa cửa sổ (multi-pane) trên tablet.
Vòng đời
Cũng giống activity, fragment có vòng đời của riêng nó trải qua các bước như onCreate, onStart, onResume, onPause, onStop... tuy nhiên thì nó không phụ thuộc vào vòng đời của activity mà nó đính vào.Phương thức | Mô tả |
---|---|
onAttach() | Fragment được đính vào activity. Activity lúc này cũng có thể chưa được khởi tạo đầy đủ. |
onCreate() | Fragment được tạo. |
onCreateView() | Fragment được tạo với giao diện đầy đủ. Giao diện view của fragment trở thành một phần trong giao diện view phân cấp của activity. |
onActivityCreated() | Activity và fragment được khởi tạo đầy đủ. Lúc này, view có thể được truy cập bởi phướng thức findViewById() . |
onResume() | Fragment được kích hoạt và hiển thị lên giao diện người dùng. |
onPause() | Fragment vẫn tồn tại nhưng không hoạt động, tình huống này được hiểu như là một activity khác đang đè lên activity chứa fragment. |
onStop() | Fragment bị hủy. |
Định nghĩa và sử dụng
Khai báo class kế thừa class Fragmentpublic class DetailFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_rssitem_detail, container, false); return view; } public void setText(String item) { TextView view = (TextView) getView().findViewById(R.id.detailsText); view.setText(item); } }
Sử dụng Fragment kiểu tĩnh (statically)
Sử dụng Fragment kiểu động (dynamically)
public class DebugExampleTwo extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initFragment(new DebugExampleTwoFragment()); } protected void initFragment(Fragment fragment) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(android.R.id.content, fragment); fragmentTransaction.commit(); } }Source code ví dụ có thể tải tại đây.
Sunday, April 20, 2014
Widget căn bản & Quản lý sự kiện
Các Widget căn bản
Bao gồm:- Textview: để hiển thị chuỗi dạng label.
- Edittext: để nhận dữ liệu từ bàn phím, có thể là chuỗi, số, tiền tệ, mật khẩu, định dạng viết hoa đầu mỗi từ, viết hoa đầu mỗi câu....
- Button: là nút bấm cơ bản
- Checkbox: là nút hộp kiểm cơ bản
- RadioButton: là nút radio cơ bản, nó thường được bọc theo nhóm radio group.
- ImageView: là widget dùng để hiển thị ảnh trong Android.
- ImageButton: là nút bấm có chèn ảnh biểu tượng bên trong.
Ngoài ra Android còn rất nhiều widget đặc trưng khác như DateTime Picker, Spinner, Rating Bar, Progress Bar, Switch button, Listview, GridView, Sliding Drawable....
Quản lý sự kiện
Bao gồm:
Activity được implement sự kiện.
- Hàm sự kiện bên ngoài Activity.
- Hàm sự kiện bên trong Activity.
- Hàm sự kiện gán trực tiếp cho widget.
- Activity được implement sự kiện.
- Sự kiện được gán trên layout xml.
Hàm sự kiện bên ngoài Activity
- Ưu điểm: code được tổ chức tốt, dễ bảo trì và sử dụng lại.
- Nhược điểm: muốn sử dụng phải khởi tạo đối tượng, hàm thực hiện phải là public.
Hàm sự kiện bên trong Activity
- Ưu điểm: có thể thay đổi dữ liệu trực tiếp ngay bên trong Activity, kể cả các dữ liệu dạng private.
- Nhược điểm: lớp lắng nghe sự kiện nằm trong cùng Activity nên việc tổ chức code không tường minh, khó sửa chữa, bảo trì hoặc nâng cấp.
Hàm sự kiện gán trực tiếp cho widget.
- Ưu điểm: cấu trúc code viết nhanh, gọn.
- Nhược điểm: chỉ có thể áp dụng cho một control, nhiều hơn thì phải copy/paste, nếu đoạn mã xử lý dài sẽ khiến cho code khó đọc.
- Ưu điểm: thích hợp cho trường hợp muốn xử lý cùng thể loại sự kiện (vd: onClickListener).
- Nhược điểm: nếu xử lý nhiều hơn một loại sự kiện sẽ gây rối code, đồng thời cũng không thể truyền tham số cho Listener.
Sự kiện được gán trên layout xml.
Các thành phần Layout
Các Layout căn bản
Bao gồm:- LinearLayout:
- RelativeLayout
- TableLayout
- FrameLayout
- AbsoluteLayout
- ScrollView
LinearLayout
Tính chất là các thành phần đặt bên trong nó sẽ được sắp xếp theo chiều dọc, hoặc chiều ngang tùy vào thuộc tính "android:orientation" là "vertical" hoặc "horizontal".
RelativeLayout
Các thành phần bên trong nó sẽ được sắp xếp có quan hệ với nhau hoặc mỗi thành phần có mối quan hệ với layout cha bên ngoài như là: nằm bên phải, nằm bên trái, căn giữa, căn phải, căn trái, nằm ở trung tâm, nằm sau thành phần nào, nằm trên thành phần nào....
TableLayout
Là layout giúp sắp xếp các thành phần thành hàng và cột.
FrameLayout
Layout này phân biệt các thành phần như là các lớp, thành phần nào thêm sau cùng sẽ là lớp trên cùng.
AbsoluteLayout
Các thành phần nằm bên trong Layout này phải xác định tọa độ chính xác để hiển thị, các thành phần có thể nằm cùng 1 vị trí.
ScollView
.......
Đây là layout đặc biệt có khả năng tạo thanh cuộn khi nội dung vượt quá chiều dài màn hình. ScrollView chỉ có thể chứa duy nhất một layout bên trong nó
Saturday, April 19, 2014
Tổng quan môi trường phát triển: Cài đặt, thiết lập và khởi tạo
Công cụ phát triển
Để phát triển ứng dụng Android các bạn cần công cụ phát triển (IDE), trong suốt loạt bài hướng dẫn về lập trình Android này tôi sẽ sử dụng công cụ Eclipse.![]() |
Các bạn tải tại: https://www.eclipse.org/downloads/ |
![]() |
Help -> Install New Software |
Paste đường link: http://dl-ssl.google.com/android/eclipse/ |
Một cách khác: các bạn có thể tải trọn bộ công cụ ADT + Eclipse đã được Google tùy chỉnh cho phát triển ứng dụng Android tại địa chỉ Android ADT
Tạo Project
Để tạo project các bạn nhấp chuột phải lên vùng package project chọn New -> Android Application Project hoặc vào File -> New - Android Application Project.
Các thành phần của project Android
- src: Chứa source nguồn java
- assets: Chứa các file cần thiết cho dự án như file database sqlite khởi tạo ban đầu, file ảnh, file âm thanh, font chữ...
- bin: Chứa những file sau khi build dự án, file .apk cũng nằm tại đây.
- libs: Thư mục này chứa tất cả các thư viện muốn đính vào dự án.
- res:
- drawable: thư mục chứa ảnh.
- layout: chứa các file giao diện xml của ứng dụng.
- menu: chứa file cấu hình menu.
- values: chứa file xml giá trị như String, kích thước, màu sắc dùng cho dự án.
- AndroidManifest.xml: Là file cấu hình của project, các activity, broadcast, service cần được khai báo ở đây.
Emulator
Các bạn có thể sử dụng Emulator mặc định của Android hoặc các Emulator từ nhà phát triển thứ 3 như:
Bởi vì emulator mặc định của Android khá chậm trên Windown nên nếu điều kiện không thể sắm thiết bị thật thì các emulator của nhà phát triển thứ 3 là sự lựa chọn hợp lý. Tất nhiên là các emulator này sẽ có cả bản trả phí và free, theo nhận định thì bản free dùng cũng khá ổn.
Wednesday, January 8, 2014
HTML5 - Quy tắc cú pháp
Ngôn ngữ HTML 5 có một "tùy chỉnh" cú pháp HTML tương thích với HTML 4 và các văn bản XHTML1 đã được xuất bản lên web, tuy nhiên nó lại không tương thích với các tính năng SGML chỉ có trên HTML 4.
HTML 5 không có các quy tắc cú pháp tương tự như XHTML như là cần phải có tên thẻ, trích dẫn thuộc tính, một thuộc tính phải có giá trị và luôn cần có thẻ đóng.
HTML5 đang trở lên rất nhiều tính linh hoạt và sẽ hỗ trợ các nội dung sau:
<link rel="stylesheet" type="text/css" href="stylefile.css">
HTML 5 loại bỏ các thông tin bổ sung cần thiết và bạn có thể sử dụng cú pháp đơn giản sau đây:
<link rel="stylesheet" href="stylefile.css">
<p> ... </ p>
Tên thẻ HTML5 là trường hợp nhạy cảm và có thể được viết trong tất cả các trường hợp chữ hoa hoặc hỗn hợp, mặc dù quy ước phổ biến nhất là gắn bó với chữ thường.
Hầu hết các phân đoạn có chứa một số nội dung như <p> ... </ p> chứa một đoạn văn. Một số phân đoạn không chứa nội dung ví dụ như là br , hr , link và meta ...v.v.
Một số thuộc tính được định nghĩa toàn cục và có thể được sử dụng trên bất kỳ phần tử nào, trong khi những phần tử khác được quy định chỉ với các thuộc tính cụ thể. Tất cả các thuộc tính có một tên và một giá trị và trông giống như như hình dưới đây trong ví dụ.
Sau đây là ví dụ về một thuộc tính HTML5 minh họa làm thế nào để đánh dấu một phần tử div với một thuộc tính tên là lớp học sử dụng một giá trị của " dụ " :
<div class="example"> ... </ div>
Thuộc tính chỉ có thể được xác định trong thẻ bắt đầu và không bao giờ được sử dụng trong các thẻ kết thúc .
Thuộc tính HTML5 là trường hợp nhạy cảm và có thể được viết trong tất cả các trường hợp chữ hoa hoặc hỗn hợp, mặc dù quy ước phổ biến nhất là gắn bó với chữ thường.
Đây là một danh sách đầy đủ của HTML5 thuộc tính.
HTML 5 không có các quy tắc cú pháp tương tự như XHTML như là cần phải có tên thẻ, trích dẫn thuộc tính, một thuộc tính phải có giá trị và luôn cần có thẻ đóng.
HTML5 đang trở lên rất nhiều tính linh hoạt và sẽ hỗ trợ các nội dung sau:
- Tên thẻ chữ hoa.
- Dấu ngoặc kép là tùy chọn cho các thuộc tính.
- Giá trị thuộc tính là không bắt buộc.
- Thẻ đóng là không bắt buộc.
DOCTYPE:
Doctypes trong phiên bản cũ của HTML là vì ngôn ngữ HTML dựa trên SGML do đó nó cần yêu cầu một tham chiếu đến một DTD. HTML 5 sẽ chỉ cần sử dụng cú pháp đơn giản để xác định DOCTYPE như sau:<!DOCTYPE html>
Mã hoá Ký tự:
Lập trình viên HTML 5 có thể sử dụng cú pháp đơn giản để xác định mã hoá ký tự như sau:<meta charset="UTF-8">
Thẻ <script>:
Đây là cách để thêm thuộc tính với giá trị "text/javascript", cú pháp như sau:<script type="text/javascript" src="scriptfile.js"></script>HTML5 đã bỏ đi các thông tin rườm rà và bạn chỉ cần viết ngắn gọn như sau:
<script src="scriptfile.js"></script>================================
Thẻ <link>:
Khai báo thẻ <link> thông thường được viết như sau:<link rel="stylesheet" type="text/css" href="stylefile.css">
HTML 5 loại bỏ các thông tin bổ sung cần thiết và bạn có thể sử dụng cú pháp đơn giản sau đây:
<link rel="stylesheet" href="stylefile.css">
Phân đoạn:
Phân đoạn trong HTML5 được đánh dấu bằng cách sử dụng các thẻ bắt đầu và thẻ kết thúc. Thẻ được giới hạn sử dụng dấu ngoặc góc với tên thẻ ở giữa. Sự khác biệt giữa các thẻ bắt đầu và thẻ kết thúc là một dấu gạch chéo trước tên thẻ.<p> ... </ p>
Tên thẻ HTML5 là trường hợp nhạy cảm và có thể được viết trong tất cả các trường hợp chữ hoa hoặc hỗn hợp, mặc dù quy ước phổ biến nhất là gắn bó với chữ thường.
Hầu hết các phân đoạn có chứa một số nội dung như <p> ... </ p> chứa một đoạn văn. Một số phân đoạn không chứa nội dung ví dụ như là br , hr , link và meta ...v.v.
Thuộc tính HTML5:
Các phần tử có thể chứa các thuộc tính được sử dụng để thiết lập các thuộc tính khác nhau.Một số thuộc tính được định nghĩa toàn cục và có thể được sử dụng trên bất kỳ phần tử nào, trong khi những phần tử khác được quy định chỉ với các thuộc tính cụ thể. Tất cả các thuộc tính có một tên và một giá trị và trông giống như như hình dưới đây trong ví dụ.
Sau đây là ví dụ về một thuộc tính HTML5 minh họa làm thế nào để đánh dấu một phần tử div với một thuộc tính tên là lớp học sử dụng một giá trị của " dụ " :
<div class="example"> ... </ div>
Thuộc tính chỉ có thể được xác định trong thẻ bắt đầu và không bao giờ được sử dụng trong các thẻ kết thúc .
Thuộc tính HTML5 là trường hợp nhạy cảm và có thể được viết trong tất cả các trường hợp chữ hoa hoặc hỗn hợp, mặc dù quy ước phổ biến nhất là gắn bó với chữ thường.
Đây là một danh sách đầy đủ của HTML5 thuộc tính.
HTML 5 - Tổng quan
HTML5 là phiên bản mới nhất và nâng cao nhất của HTML. Về mặt kỹ thuật, HTML không phải là một ngôn ngữ lập trình, mà là một ngôn ngữ đánh dấu. Bài viết trên blog này cung cấp cho các bạn những khái niệm căn bản về HTML5.
HTML5 là phiên bản lớn tiếp theo của HTML tiêu chuẩn thay thế cho HTML 4.01, XHTML 1.0, XHTML và 1.1. HTML5 là một tiêu chuẩn cho cấu trúc và trình bày nội dung trên World Wide Web. HTML5 là một hợp tác giữa World Wide Web Consortium (W3C) và Web Hypertext Application Technology Working Group (WHATWG).
HTML5 có các tiêu chuẩn mới kết hợp các tính năng như xem video và kéo-và-thả mà trước đây còn phải phụ thuộc vào plug-in trên trình duyệt của bên thứ ba như Adobe Flash, Microsoft Silverlight, và Google Gears.
Phiên bản mới nhất của Apple Safari, Google Chrome, Mozilla Firefox và Opera cũng hỗ trợ nhiều tính năng HTML5 và Internet Explorer 9.0 cũng sẽ có hỗ trợ cho một số chức năng HTML5. Các trình duyệt web di động được cài đặt trên iPhone, iPad và điện thoại Android đều có hỗ trợ tuyệt vời cho HTML5.
HTML5 giới thiệu một số yếu tố mới và các thuộc tính giúp trong việc xây dựng một trang web hiện đại . Sau đây là những tính năng tuyệt vời được giới thiệu trong HTML5:
HTML5 là phiên bản lớn tiếp theo của HTML tiêu chuẩn thay thế cho HTML 4.01, XHTML 1.0, XHTML và 1.1. HTML5 là một tiêu chuẩn cho cấu trúc và trình bày nội dung trên World Wide Web. HTML5 là một hợp tác giữa World Wide Web Consortium (W3C) và Web Hypertext Application Technology Working Group (WHATWG).
HTML5 có các tiêu chuẩn mới kết hợp các tính năng như xem video và kéo-và-thả mà trước đây còn phải phụ thuộc vào plug-in trên trình duyệt của bên thứ ba như Adobe Flash, Microsoft Silverlight, và Google Gears.
Phiên bản mới nhất của Apple Safari, Google Chrome, Mozilla Firefox và Opera cũng hỗ trợ nhiều tính năng HTML5 và Internet Explorer 9.0 cũng sẽ có hỗ trợ cho một số chức năng HTML5. Các trình duyệt web di động được cài đặt trên iPhone, iPad và điện thoại Android đều có hỗ trợ tuyệt vời cho HTML5.
HTML5 giới thiệu một số yếu tố mới và các thuộc tính giúp trong việc xây dựng một trang web hiện đại . Sau đây là những tính năng tuyệt vời được giới thiệu trong HTML5:
- Các thẻ mới: ví dụ như <header>, <footer>, <section>....
- Forms 2.0: Cải tiến các biểu mẫu web HTML với các thuộc tính mới đã được giới thiệu cho thẻ <input>.
- Persistent Local Storage: Để đạt được mà không cần đến plugin của bên thứ ba.
- WebSocket: Một thế hệ tiếp theo công nghệ truyền thông hai chiều cho các ứng dụng web.
- Server-Sent Events - One Way Messaging: sự kiện server-sent có nghĩa là một trang web sẽ được tự động cập nhật từ máy chủ. Nếu có bản cập nhật mới, dữ liệu sẽ được máy chủ gửi tới trang web.
- Canvas: Hỗ trợ 2D, bạn có thể vẽ giao diện với JavaScript.
- Audio & Video: Bạn có thể nhúng âm thanh hoặc video trên các trang web của bạn mà không cần đến plugin của bên thứ ba.
- Geolocation - Định vị: Bây giờ người dùng có thể chọn chia sẻ vị trí địa lý của họ với các ứng dụng web của bạn.
- Microdata - Dữ liệu vi mô: Điều này cho phép bạn tạo ra các từ vựng của riêng bạn vượt HTML5 và mở rộng trang web của bạn với ngữ nghĩa tùy chỉnh.
- Drag and drop - Kéo và thả: kéo và thả các mục từ một vị trí khác vị trí trên cùng một trang web.
HTML5 có khả năng tương thích ngược. HTML5 được thiết kế để có tương thích ngược với các trình duyệt web hiện tại. Tính năng mới này xây dựng trên tính năng hiện có và cho phép bạn cung cấp nội dung dự phòng cho trình duyệt cũ hơn. Đó là đề nghị để phát hiện hỗ trợ cho các tính năng HTML5 cá nhân sử dụng một vài dòng lệnh Javascript.
Sunday, January 5, 2014
Giới thiệu Design Patterns
Khái niệm
Design Patterns được hiểu là dạng mẫu thiết kế được sử dụng trong phát triển các dự án phần mềm. Các mẫu thiết kế này chính là giải pháp cho những vấn đề chung mà các nhà phát triển thường gặp phải trong quá trình phát triển phần mềm. Design Patterns được đúc rút bằng cách thử và sai từ các nhà phát triển trong một thời gian dài.
Các bài viết về Design Patterns trong blog này sẽ hướng dẫn các bạn tiếp cận bằng các ví dụ sử dụng ngôn ngữ Java.
Các bài viết về Design Patterns trong blog này sẽ hướng dẫn các bạn tiếp cận bằng các ví dụ sử dụng ngôn ngữ Java.
Ai nên đọc?
Nếu bạn là một sinh viên hay là lập trình viên mới vào nghề thì những bài viết này sẽ rất có ích giúp bạn định hướng kỹ thuật viết code. Nếu bạn là một lập trình viên có kinh nghiệm thì tôi cũng hy vọng giúp bạn hệ thống lại kiến thức để phát triển nhiều ứng dụng chất lượng hơn cho cộng đồng.Bạn cần có?
Để có thể thuận lợi theo dõi các bài viết này, bạn cần nắm cơ bản kiến thức về ngôn ngữ Java. Nếu không chắc chắn lắm, tôi đề nghị bạn tham khảo qua trước loạt bài viết về Java căn bản trước khi tiếp cận hướng dẫn Design Patterns này.Giới thiệu Android
Android ™ cung cấp một bộ đầy đủ các phần mềm cho các thiết bị di động: Android là một hệ thống điều hành, middleware và các ứng dụng di động chủ chốt. Để phát triển ứng dụng Android bạn cần có Android Software Development Kit (SDK).
2.0/2.1 (Eclair):
Đầu tháng 9 năm 2009, một năm sau khi G1 chào đời, Android 2.0 đã được ra mắt. Thật sự không ngoa khi mô tả Android 2.1 bằng một chữ "lớn". Một cơ hội lớn cho những nhà phát triển, một tiềm năng lớn cho Android về sau, những chiếc điện thoại "lớn" được ra mắt và phân phối bởi các nhà mạng lớn. Eclair, tên gọi của Android 2.0, lúc mới ra mắt chỉ được dùng độc nhất cho chiếc Motorola Droid của nhà mạng Verizon, một trong những chiếc điện thoại đã kích hoạt cho một kỉ nguyên Android lớn mạnh như ngày hôm nay. Motorola Droid còn được biết đến với tên gọi Motorola Milestone khi nó xuất hiện ở Việt Nam. Đây là một sản phẩm rất thành công của Motorola và cả Google khi mang đến cho người dùng những trải nghiệm cực kì tốt với Android. Phiên bản này tân trang lại giao diện người dùng, giới thiệu HTML5, hỗ trợ Exchange ActiveSync 2.5.
2.2 (Froyo):
Android 2.2 được ra mắt trong năm 2010 và mục tiêu của chương trình Nexus đã xuất hiện rõ hơn bao giờ hết: Nexus One là chiếc điện thoại đầu tiên được nâng cấp lên Android 2.2, sớm hơn nhiều so với tất cả các hãng khác. Giao diện màn hình chính đã được thay đổi, từ 3 màn hình chính tăng lên thành 5 màn hình. Dãy nút kích hoạt nhanh chế độ gọi điện, web và App Drawer cũng đã xuất hiện. Những chấm nhỏ ở góc trái, phải bên dưới của màn hình giúp người dùng biết mình đang xem đến màn hình nào. Google đã có nhiều cố gắng để giao diện Android được vui và đẹp hơn, dễ dùng hơn, bắt kịp phần nào với giao diện của bên thứ ba như HTC Sense chẳng hạn. Phiên bản này nâng cấp tốc độ xử lí, giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash, thêm tính năng tạo điểm truy cập Wi-Fi.
2.3 (Gingerbread):
Khoảng nửa năm sau khi FroYo xuất hiện, Google đã trở lại với bản Android 2.3. Google giới thiệu nó với nhiều tính năng mới, tập trung vào việc phát triển game, đa phương tiện và phương thức truyền thông mới. Android 2.3 có tên mã là Gingerbread, hiện bộ SDK Android 2.3 dành cho các nhà phát triển cũng đã được Google phát hành. Bên cạnh đó, chiếc Nexus S do Samsung sản xuất cũng xuất hiện với vai trò là người kế nhiệm cho Nexus One. Nexus S có vài thay đổi nhỏ so với người anh em Galaxy S. Phiên bản này sửa lại giao diện người dùng, cải thiện bàn phím ảo, thêm tính năng copy/paste, hỗ trợ công nghệ giao tiếp tầm sóng ngắn NFC.
3.0 (Honeycomb):
Hệ điều hành dành riêng cho máy tính bảng tablet, giao diện mới, hỗ trợ bộ xử lí đa nhân và xử lý đồ họa. Sản phẩm đầu tiên dùng hệ điều hành này là Motorola Xoom. Xoom mang trong mình một giao diện thuần Android 3.0 và không bị chỉnh sửa gì. Mặc dù Android 3.0 không có nhiều dấu ấn đặc biệt trên thị trường nhưng nó là nền tảng cho Android 4.0 sau này.
4.0 (Ice-cream sandwich):
Hệ điều hành là sự kết hợp giữa Gingerbread và Honeycomb. Cuối năm 2011, Google chính thức giới thiệu điện thoại Galaxy Nexus, thiết bị đầu tiên trên thị trường sử dụng Android 4.0 Ice Cream Sandwich. Có thể nói Android 4.0 là sự thay đổi lớn nhất trong lịch sử phát triển của Android tính đến ngày viết bài này. Android 4.0 hỗ trợ một bộ font mới tên là Roboto được cho là tối ưu hóa để dùng trên các màn hình độ phân giải càng ngày càng cao hơn, đồng thời để hiển thị được nhiều thông tin hơn trên màn hình. Hệ thống thông báo (Notification) già nua của Android đã được làm mới hoàn toàn, đẹp hơn, tiện dụng hơn, nhất là tính năng trượt ngang để xóa từng thông báo riêng lẻ. Tương tự như vậy cho tính năng Recent Apps và cả trình duyệt của máy. Bàn phím cũng được làm mới với khả năng tự động sửa lỗi cao hơn, việc sao chép, cắt dán chữ và nội dung cũng tốt hơn bao giờ hết.
4.1 (Jelly Bean):
Được giới thiệu tại hội nghịGoogle I/O với nhiều cải tiến đáng giá và rất được mong đợi. Đây cũng là lúc chiếc Nexus 7 được chính thức ra mắt với sự hợp tác giữa Google với Asus. Về giao diện, không có nhiều thay đổi so với Android 4.0, vẫn là màn hình chính với thanh dock bên dưới quen thuộc. Giao diện kiểu này rất đơn giản nhưng lại đẹp và gọn gàng, giúp chúng ta dễ dàng theo dõi những thông tin xuất hiện trên màn hình, đặc biệt là khi điều khiển các ứng dụng.
Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một số đầu phát HD, HD Player, TV) phát triển bởi Google và dựa trên nền tảng Linux. Trước đây, Android được phát triển bởi công ty liên hợp Android ( sau đó được Google mua lại vào năm 2005).
Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java. Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai.
Các phiên bản Android
Một điều hài hước là phiên bản đầu tiên của Android xuất xưởng mà chẳng có một thiết bị thực tế nào trên thị trường. Từ lúc ra mắt phiên bản đầu tiên cho tới nay, Android đã có rất nhiều bản nâng cấp. Đa số đều tập trung vào việc vá lỗi và thêm những tính năng mới. Mỗi bản nâng cấp đều được đặt với những mã tên riêng dựa theo các món ăn tráng miệng. Hiện tại các phiên bản chính của Android bao gồm:2.0/2.1 (Eclair):
Đầu tháng 9 năm 2009, một năm sau khi G1 chào đời, Android 2.0 đã được ra mắt. Thật sự không ngoa khi mô tả Android 2.1 bằng một chữ "lớn". Một cơ hội lớn cho những nhà phát triển, một tiềm năng lớn cho Android về sau, những chiếc điện thoại "lớn" được ra mắt và phân phối bởi các nhà mạng lớn. Eclair, tên gọi của Android 2.0, lúc mới ra mắt chỉ được dùng độc nhất cho chiếc Motorola Droid của nhà mạng Verizon, một trong những chiếc điện thoại đã kích hoạt cho một kỉ nguyên Android lớn mạnh như ngày hôm nay. Motorola Droid còn được biết đến với tên gọi Motorola Milestone khi nó xuất hiện ở Việt Nam. Đây là một sản phẩm rất thành công của Motorola và cả Google khi mang đến cho người dùng những trải nghiệm cực kì tốt với Android. Phiên bản này tân trang lại giao diện người dùng, giới thiệu HTML5, hỗ trợ Exchange ActiveSync 2.5.
2.2 (Froyo):
Android 2.2 được ra mắt trong năm 2010 và mục tiêu của chương trình Nexus đã xuất hiện rõ hơn bao giờ hết: Nexus One là chiếc điện thoại đầu tiên được nâng cấp lên Android 2.2, sớm hơn nhiều so với tất cả các hãng khác. Giao diện màn hình chính đã được thay đổi, từ 3 màn hình chính tăng lên thành 5 màn hình. Dãy nút kích hoạt nhanh chế độ gọi điện, web và App Drawer cũng đã xuất hiện. Những chấm nhỏ ở góc trái, phải bên dưới của màn hình giúp người dùng biết mình đang xem đến màn hình nào. Google đã có nhiều cố gắng để giao diện Android được vui và đẹp hơn, dễ dùng hơn, bắt kịp phần nào với giao diện của bên thứ ba như HTC Sense chẳng hạn. Phiên bản này nâng cấp tốc độ xử lí, giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash, thêm tính năng tạo điểm truy cập Wi-Fi.
2.3 (Gingerbread):
Khoảng nửa năm sau khi FroYo xuất hiện, Google đã trở lại với bản Android 2.3. Google giới thiệu nó với nhiều tính năng mới, tập trung vào việc phát triển game, đa phương tiện và phương thức truyền thông mới. Android 2.3 có tên mã là Gingerbread, hiện bộ SDK Android 2.3 dành cho các nhà phát triển cũng đã được Google phát hành. Bên cạnh đó, chiếc Nexus S do Samsung sản xuất cũng xuất hiện với vai trò là người kế nhiệm cho Nexus One. Nexus S có vài thay đổi nhỏ so với người anh em Galaxy S. Phiên bản này sửa lại giao diện người dùng, cải thiện bàn phím ảo, thêm tính năng copy/paste, hỗ trợ công nghệ giao tiếp tầm sóng ngắn NFC.
3.0 (Honeycomb):
Hệ điều hành dành riêng cho máy tính bảng tablet, giao diện mới, hỗ trợ bộ xử lí đa nhân và xử lý đồ họa. Sản phẩm đầu tiên dùng hệ điều hành này là Motorola Xoom. Xoom mang trong mình một giao diện thuần Android 3.0 và không bị chỉnh sửa gì. Mặc dù Android 3.0 không có nhiều dấu ấn đặc biệt trên thị trường nhưng nó là nền tảng cho Android 4.0 sau này.
4.0 (Ice-cream sandwich):
Hệ điều hành là sự kết hợp giữa Gingerbread và Honeycomb. Cuối năm 2011, Google chính thức giới thiệu điện thoại Galaxy Nexus, thiết bị đầu tiên trên thị trường sử dụng Android 4.0 Ice Cream Sandwich. Có thể nói Android 4.0 là sự thay đổi lớn nhất trong lịch sử phát triển của Android tính đến ngày viết bài này. Android 4.0 hỗ trợ một bộ font mới tên là Roboto được cho là tối ưu hóa để dùng trên các màn hình độ phân giải càng ngày càng cao hơn, đồng thời để hiển thị được nhiều thông tin hơn trên màn hình. Hệ thống thông báo (Notification) già nua của Android đã được làm mới hoàn toàn, đẹp hơn, tiện dụng hơn, nhất là tính năng trượt ngang để xóa từng thông báo riêng lẻ. Tương tự như vậy cho tính năng Recent Apps và cả trình duyệt của máy. Bàn phím cũng được làm mới với khả năng tự động sửa lỗi cao hơn, việc sao chép, cắt dán chữ và nội dung cũng tốt hơn bao giờ hết.
4.1 (Jelly Bean):
Được giới thiệu tại hội nghịGoogle I/O với nhiều cải tiến đáng giá và rất được mong đợi. Đây cũng là lúc chiếc Nexus 7 được chính thức ra mắt với sự hợp tác giữa Google với Asus. Về giao diện, không có nhiều thay đổi so với Android 4.0, vẫn là màn hình chính với thanh dock bên dưới quen thuộc. Giao diện kiểu này rất đơn giản nhưng lại đẹp và gọn gàng, giúp chúng ta dễ dàng theo dõi những thông tin xuất hiện trên màn hình, đặc biệt là khi điều khiển các ứng dụng.
Phiên bản
|
Tên mã
|
Ngày phát hành
|
Cấp API
|
Thị phần
|
tháng 10 năm 2013
|
???
|
???
|
||
25 tháng 7 năm 2013
|
???
|
???
|
||
13 tháng 11 năm 2012
|
17
|
1,6%
|
||
9 tháng 7 năm 2012
|
16
|
14,9%
|
||
16 tháng 12 năm 2011
|
15
|
28,6%
|
||
15 tháng 7 năm 2011
|
13
|
0,9%
|
||
10 tháng 5 năm 2011
|
12
|
0,3%
|
||
9 tháng 2 năm 2011
|
10
|
44%
|
||
6 tháng 12 năm 2010
|
9
|
0,2%
|
||
20 tháng 5 năm 2010
|
8
|
7,6%
|
||
26 tháng 10 năm 2009
|
7
|
1,9%
|
||
15 tháng 9 năm 2009
|
4
|
0,2%
|
Subscribe to:
Posts (Atom)