Hướng dẫn học lập trình Android cơ bản từ A-Z cho người mới bắt đầu
28/09/2024
Android hiện đang là hệ điều hành đứng đầu thị trường di động và được sử dụng rất phổ biến trên toàn cầu. Vậy nên học lập trình Android sẽ mang lại rất nhiều cơ hội cho bạn.
Bài viết này sẽ hướng dẫn cho các bạn mới bắt đầu học lập trình Android từ A-Z. Hãy cùng bắt đầu nhé!
1. Lập trình ứng dụng Android là gì?
Trước khi bắt đầu lập trình ứng dụng Android, có hai khái niệm cơ bản mà bạn cần hiểu về ứng dụng Android, đó là:
- Cách ứng dụng Android cung cấp nhiều điểm đầu vào
- Cách ứng dụng Android thích ứng với các thiết bị khác nhau
1.1. Ứng dụng Android cung cấp nhiều điểm đầu vào
Ứng dụng Android được xây dựng như một tổ hợp các thành phần có thể coi là riêng lẻ, ví dụ thành phần ứng dụng cung cấp giao diện người dùng (UI)
Hoạt động “chính” sẽ bắt đầu khi người dùng chạm vào biểu tượng ứng dụng của bạn. Hoặc bạn cũng có thể hướng người dùng thực hiện thao tác trên ứng dụng từ một nơi khác. Chẳng hạn như từ mục thông báo hoặc thậm chí từ một ứng dụng khác.
Các thành phần khác, như broadcast receivers và services, cho phép ứng dụng của bạn thực hiện các tác vụ nền mà không cần giao diện người dùng.
Tìm hiểu các chương trình Bootcamp chuẩn quốc tế?
1.2. Ứng dụng Android thích ứng với các thiết bị khác nhau
Android cho phép bạn cung cấp cái tài nguyên khác nhau cho các thiết bị khác nhau.
Ví dụ: Bạn có thể tạo các bố cục khác nhau cho các kích thước màn hình khác nhau. Hệ thống xác định bố cục sẽ sử dụng dựa trên kích thước màn hình của thiết bị hiện tại.
Hoặc nếu bất kỳ tính năng nào trong ứng dụng của bạn cần phần cứng cụ thể, chẳng hạn như với máy ảnh. Bạn có thể truy vấn trong thời gian chạy xem thiết bị có phần cứng đó hay không. Sau đó tắt các tính năng tương ứng nếu không có.
Ngoài ra, bạn có thể chỉ định ứng dụng của bạn yêu cầu một số phần cứng nhất định. Để Google Play không cho phép cài đặt ứng dụng trên các thiết bị không thích ứng.
Vậy liệu lập trình Android mang lại những lợi ích gì cho người học?
2. Những lợi ích khi học lập trình Android
2.1. Mang lại thu nhập cao
Trước hết, học lập trình Android mang lại thu nhập rất cao cho các lập trình viên.
Google cho phép các nhà phát triển tự định giá ứng dụng trong Google Play. Do đó việc kiếm tiền là rất dễ dàng nếu ứng dụng của bạn thu hút được người dùng với nhiều lượt tải về.
Sau đó, bạn sẽ được Google trả về doanh thu sau khi đã trừ đi các chi phí có liên quan.
Ngoài ra, bạn cũng có thể có thêm doanh thu từ việc quảng cáo. Phần doanh thu này thường dễ thấy ở các ứng dụng không tính phí.
2.2. Cơ hội việc làm rộng mở
Là một trong những hệ điều hành phổ biến nhất hiện nay nên không lấy làm lạ khi có rất nhiều cơ hội việc làm cho các lập trình viên Android.
Các lập trình viên có thể lựa chọn làm việc tự do hoặc cho các công ty vì công việc này khá linh động.
Khi đã thành thạo lập trình Android, bạn cũng có thể dễ dàng học thêm lập trình các ứng dụng của các hệ điều hành di động khác.
2.3. Xu hướng lập trình Android đang dẫn đầu thế giới
Cuối cùng, như đã đề cập ở trên, hệ điều hành Android đang xâm nhập ở khắp mọi nơi trên toàn cầu.
Android hiện đang có mặt trong hơn 80% số lượng thiết bị di động thông minh trên toàn thế giới.
Học Android chắc chắn bạn sẽ được nhiều hơn mất vậy còn chần chừ gì nữa đúng không nào. Ta hãy cùng thử tìm hiểu Android bao gồm những thành phần cơ bản nào nhé.
3. Tìm hiểu các thành phần Android cơ bản
3.1. Activity & States
Trong hệ điều hành Android, Activity là nơi mà người dùng tương tác trực tiếp với ứng dụng. Do đó, Activity nằm giữ vai trò rất quan trọng.
Mỗi ứng dụng có thể có 1 hoặc nhiều Activity tương ứng với các màn hình khác nhau (nếu ứng dụng không sử dụng Fragment). Nhưng mỗi ứng dụng tối thiểu phải có 1 Activity.
Chẳng hạn như chụp ảnh, hẹn giờ, gọi điện v.v…
Một Activity cũng có thể gọi đến một Activity khác, có thể là từ bên trong hoặc bên ngoài ứng dụng đều được. Nhưng đối với ứng dụng từ bên ngoài thì cần phải được cấp quyền.
Khi Activity được gọi, người dùng sẽ tương tác với Activity ngay tại thời điểm đó.
Ví dụ: Sau khi chụp ảnh trên thiết bị của mình, bạn muốn gửi ảnh đó qua email. Lúc này, bạn có thể gửi yêu cầu để bắt đầu một Activity có chức năng soạn email để gửi ảnh mà bạn vừa chụp đi.
3.2. Layout trong Android
Để biết được layout là gì trước hết bạn cần phải hiểu về View.
View được thể hiện bằng các hình chữ nhật có chứa các thông tin hiển thị cho người dùng. Qua đó người dùng có thể tương tác với View.
Layout chính là các View được tạo ra với mục đích chứa View con, sau đó điều khiển và sắp xếp vị trí cho các View con đó trên màn hình.
Các layout đều có cơ chế điều khiển vị trí View con của riêng mình.
Một số ví dụ về layout bạn có thể tham khảo bao gồm: TableLayout, FrameLayout, RelativeLayout v.v…
3.3. Intents trong Android
Đối tượng Intent là đối tượng hỗ trợ thực hiện chức năng gửi tin nhắn trong hệ điều hành Android.
Nhờ Intent mà các thành phần trong Android có thể yêu cầu chức năng từ các thành phần khác.
Ví dụ: Khi bạn truy cập ứng dụng Messenger trên điện thoại để chụp ảnh, bạn chỉ cần sử dụng một Intent là sẽ thực hiện được thao tác.
Ngoài ra, Intent còn giúp hoạt động liên lạc giữa các thành phần trong ứng dụng được dễ dàng hơn. Việc di chuyển từ Activity này sang Activity khác cũng được thực hiện nhờ Intent.
Có 2 loại Intent được hệ điều hành Android hỗ trợ đó là: intent minh bạch và intent ngầm:
- Intent minh bạch khi thành phần đích được ứng dụng định nghĩa trong intent đó.
- Intent ngầm là intent mà thành phần đích không được ứng dụng đặt tên
3.4. Xử lý sự kiện
Xử lý sự kiện (event handling) là việc xử lý tương tác qua lại giữa các thành phần của ứng dụng và người sử dụng ứng dụng.
Ví dụ: Sự kiện chạm vào màn hình, nhấn chọn 1 nút bất kỳ trên màn hình v.v…
Mỗi sự kiện này đều được xử lý và lắng nghe thông qua các hàm tương ứng.
Ví dụ:
- Hàm onTouch() dùng khi người sử dụng ứng dụng chạm vào màn hình theo nhiều cách khác nhau
- Hàm onClick() tương tự như hàm onTouch() nhưng hàm này chỉ áp dụng với thao tác chạm nhấc tay lên
- Hàm onLongClick() hoạt động khi người dùng chạm tay và giữ nguyên trên màn hình
- V.v….
Để nắm bắt và xử lý được các sự kiện này, hệ điều hành Android cho phép các lập trình viên có thể thực hiện theo 5 cách cơ bản sau:
Cách 1: Tạo riêng Member Class
Trước tiên, tạo một inner class với tên HandleClick trong Activity. Sau đó, inner class này sẽ thực hiện một giao diện (Interface) tên là OnClickListener.
class MainActivity:AppCompatActivity() {
protected fun onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//attach an instance of HandleClick to the Button
findViewById(R.id.button1).setOnClickListener(HandleClick())
}
private inner class HandleClick:View.OnClickListener {
fun onClick(arg0:View) {
val btn = arg0 as Button //cast view to a button
// update the TextView text
(findViewById(R.id.textView) as TextView).setText(“You pressed “ + btn.getText())
}
}
}
Cách 2: Tạo riêng Interface
Khai báo biến kiểu
OnClickListener với câu lệnh object:View.onClickListener(){…}
class MainActivity:AppCompatActivity() {
private val handleClick = object:View.OnClickListener() {
fun onClick(arg0:View) {
val btn = arg0 as Button
val tv = findViewById(R.id.textView) as TextView
tv.setText(“You pressed “ + btn.getText())
}
}
protected fun onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//attach an instance of HandleClick to the Button
findViewById(R.id.button1).setOnClickListener(handleClick)
}
}
Cách 3: Sử dụng Anonymous Inner Class
Khởi tạo instance của OnClickListener trong đối số của hàm setonClickListener cũng bằng lệnh object:View.OnClickListener
class MainActivity:AppCompatActivity() {
protected fun onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//attach an instance of HandleClick to the Button
findViewById(R.id.button1).setOnClickListener(object:View.OnClickListener() {
fun onClick(arg0:View) {
val btn = arg0 as Button
val tv = findViewById(R.id.textView) as TextView
tv.setText(“You pressed “ + btn.getText())
}
})
}
}
Cách 4: Implement trực tiếp trên Activity
Vì Activity có khả năng implement OnClickListener, nên khi ta sử dụng cách này, Activity sẽ override lại hàm onClick().
class main:AppCompatActivity(), View.OnClickListener {
protected fun onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//attach an instance of HandleClick to the Button
findViewById(R.id.button1).setOnClickListener(this)
}
fun onClick(arg0:View) {
val btn = arg0 as Button
val tv = findViewById(R.id.textView) as TextView
tv.setText(“You pressed “ + btn.getText())
}
}
Cách 5: Sử dụng thuộc tính onClick trong View Layout
Từ Android 1.6 trở đi, hàm có thể được gán vào android:onClick trong layout, rồi được viết trong Activity.
<Button
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“Button 1”
android:id=“@+id/button1”
android:layout_below=“@+id/textView”
android:layout_alignParentLeft=“true”
android:layout_alignParentStart=“true”
android:onClick=“handleClick” />
Sau đó có thể viết hàm trong Activity như sau:
class MainActivity:AppCompatActivity() {
fun onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun handleClick(arg0:View) {
val btn = arg0 as Button
val tv = findViewById(R.id.textView) as TextView
tv.setText(“You pressed “ + btn.getText())
}
}
Lưu ý cách làm này chỉ được sử dụng cho sự kiện onClick.
Tùy vào mục đích và thói quen thao tác mà lập trình viên có thể lựa chọn cho mình cách xử lý phù hợp.
3.5. Các loại service trong Android
Service trong Android được chia làm 3 loại cơ bản, đó là:
- Foreground Service
Foreground Service thực hiện các thao tác được người dùng chú ý và có thể dễ dàng thấy rõ.
Ví dụ:
Một ứng dụng nghe nhạc có thể phát nhạc và điều khiển nó bằng Foreground Service. Trong đó, Foreground Service phải hiển thị thông báo (Notification).
Lúc này, ngay cả khi người dùng không thao tác với ứng dụng thì Foreground Service vẫn tiếp tục chạy.
- Background Service
Trái ngược với Foreground Service, Background Service lại thực hiện những hoạt động mà người dùng không chú ý trực tiếp/
Ví dụ:
Khi ứng dụng sử dụng service để thu gom bộ nhớ. Lúc này, service được dùng chính là Background Service vì hoạt động này người dùng không cần thiết phải chú tâm đến.
- Bound Service
Trong Android, khi có một thành phần của ứng dụng bị ràng buộc bởi lời gọi bindService() thì được gọi là Bound Service.
Chỉ cần ít nhất một thành phần ràng buộc thì Bound sẽ luôn chạy.
Hoặc cũng có thể có nhiều thành phần cùng ràng buộc với Bound cùng lúc. Khi mất ràng buộc thì nó sẽ Destroy.
Ngoài ra, Bound Service thường cung cấp giao diện Client – Server. Khi đó, các thành phần tương tác với Bound được phép gửi yêu cầu, nhận kết quả, hoặc có thể là IPC (Inter-Process Communication).
Bạn đã sẵn sàng đổi thay sự nghiệp chưa?
3.6. Broadcast Receiver
Broadcast Receiver có chức năng lắng nghe các trạng thái, hoạt động của hệ thống được phát ra thông qua các Intent.
Broadcast Receiver thậm chí còn hoạt động ngay cả khi ứng dụng đã được tắt nên thường được dùng với service.
Ví dụ:
- Khi chuyển dữ liệu từ service lên activity, bạn có thể dùng broadcast
- Trong các ứng dụng hẹn giờ, ứng dụng sẽ dùng broadcast để báo giờ khi đến giờ hẹn v.v…
4. 5 nguồn học lập trình Android chất lượng
Để tìm hiểu sâu hơn về hệ điều hành Android bạn cũng có thể học và tham khảo thêm ở 5 nguồn sau đây:
4.1. Android Basics: User Interface
Đầu tiên trong danh sách này chính là khóa học Android Basics.
Đây là khóa học giúp bạn tìm hiểu các kiến thức cơ bản về lập trình Android và Java, giúp bạn thực hiện những bước đi đầu tiên trên hành trình trở thành nhà lập trình Android.
Khóa học được thiết kế cho người mới học lập trình và muốn tìm hiểu cách xây dựng ứng dụng Android. Nên bất kỳ ai cũng có thể tham gia dù là người chưa có kinh nghiệm.
Thông qua khóa học, bạn sẽ học được cách xây dựng layout cho app và được thực hành.
Với khóa học được tổ chức bởi Google, bạn có 2 sự lựa chọn, đó là khóa miễn phí và khóa tính phí.
Đối với khóa miễn phí bạn sẽ được học các kiến thức liên quan đến ngành.
Riêng với khóa có tính phí bạn sẽ được đánh giá dự án, có thêm cố vấn, nhận được chứng nhận và thậm chí là được hỗ trợ việc làm.
Tùy vào mục đích của bản thân mà bạn có thể đưa ra lựa chọn phù hợp.
4.2. Android development
Phương án tiếp theo giúp bạn tự học lập trình Android hiệu quả đó là kết hợp các kiến thức bên dưới:
- Trước tiên, một địa điểm vô cùng hữu ích lại không phải mất bất cứ chi phí nào chính là website chính thức của Androidt: developer.android.com
Việc đọc toàn bộ trang web có thể sẽ rất mất thời gian mà cũng không đảm bảo bạn có thể nhớ mọi thứ.
Tuy nhiên, bạn sẽ hiểu được hệ sinh thái, cũng như các giải pháp, ý tưởng và công nghệ được liên kết với Android. Và trong tương lai bạn cũng sẽ biết nơi để tìm kiếm những thứ mà bạn cần tại đây.
- Kotlin: Đây là một ngôn ngữ đã chính thức được Google hỗ trợ trên Android như một ngôn ngữ hạng nhất.
Ngày càng ít công ty phát triển các ứng dụng mà chỉ sử dụng Java. Vì vậy, việc nghiên cứu Kotlin cũng là một bước cần thiết để bạn trở thành nhà phát triển Android thành công.
- Tìm hiểu về Material Design: tương tự, hãy đọc một lượt các thông tin trên trang để biết cách Material Design được xây dựng và ý tưởng nằm sau đó.
Android Studio IDE: đây là một trong những IDE tốt nhất dành cho Android từ Google. Hãy thử tải xuống và tìm hiểu về nó.
- Cuối cùng, sau khi đã nắm được các kiến thức và có được các công cụ cần thiết, hãy bắt đầu thực hành viết mã. Học đi đôi với hành luôn là cách học tốt nhất.
Quay lại trang web chính của Android, bạn sẽ tìm thấy rất nhiều ví dụ hữu ích. Hãy xem qua các ví dụ này trước khi bắt đầu lập trình thật.
4.3. XML Basics
XML (Extensible Markup Language) là một ngôn ngữ đánh dấu xác định một tập hợp các quy tắc để mã hóa tài liệu ở định dạng có thể đọc được bởi cả máy và người.
Các mục tiêu thiết kế của XML tập trung vào tính đơn giản, tính tổng quát và khả năng sử dụng trên Internet.
XML cũng là một định dạng dữ liệu văn bản với sự hỗ trợ mạnh mẽ từ Unicode cho các ngôn ngữ khác nhau của con người.
Mặc dù thiết kế của XML tập trung vào các tài liệu, nhưng ngôn ngữ này cũng được sử dụng rộng rãi để biểu diễn các cấu trúc dữ liệu tùy ý. Chẳng hạn như các cấu trúc được sử dụng trong các dịch vụ web.
XML là một trong những thành phần có thể giúp phát triển web thân thiện với người dùng.
Nhiều hệ thống máy tính chứa dữ liệu ở các định dạng không tương thích khiến việc trao đổi dữ liệu tốn nhiều thời gian và có thể làm mất dữ liệu. XML thường lưu trữ dữ liệu ở dạng văn bản thuần túy nên giúp việc lưu trữ, vận chuyển và chia sẻ dữ liệu độc lập hơn, ít xảy ra lỗi hơn.
4.4. Google Developers Codelabs
Nếu bạn là người mới sử dụng Apps Script, bạn có thể tìm hiểu các kiến thức cơ bản bằng cách sử dụng danh sách Google Sheets codelab.
Danh sách này bao gồm tập hợp các codelab tuần tự. Mỗi codelab hướng dẫn bạn từng bước về cách tạo một ứng dụng mẫu.
Các codelab trong danh sách này tập trung sử dụng Apps Script với Google Sheets.
Dịch vụ Spreadsheet là một trong những dịch vụ lớn nhất và phổ biến nhất trong Apps Script. Và danh sách này sẽ giúp bạn làm quen với nội dung và cách sử dụng của nó.
Danh sách này bao gồm nhiều nội dung về Apps Script, bao gồm:
- Sử dụng trình chỉnh sửa Apps Script trong trình duyệt
- Tạo và chỉnh sửa macro Google Sheet
- Tạo các chức năng tùy chỉnh của Google Sheet
- Nhập dữ liệu vào Google Sheet
- Thêm, chỉnh sửa và định dạng dữ liệu Google Sheet bằng Apps Script
- Tạo biểu đồ và xuất chúng sang Google Slides
- Tìm, nạp dữ liệu từ các dịch vụ API của bên thứ 3
- Tạo menu và cửa sổ hộp thoại trong Google Sheet
4.5. HTTP và REST
HTTP (Hypertext Transfer Protocol) cực kỳ quan trọng với web. Nó được sử dụng mỗi khi bạn chuyển tài liệu hoặc thực hiện bất kỳ một yêu cầu AJAX nào.
Để củng cố HTTP, quy tắc thiết kế REST được tận dụng tối đa sức mạnh để xây dựng các giao diện. Nó có thể được sử dụng từ hầu hết mọi thiết bị hoặc hệ điều hành.
REST là một cách đơn giản để tổ chức các tương tác giữa các hệ thống độc lập. Về lý thuyết, REST không gắn liền với web nhưng nó hầu như được triển khai như vậy và được lấy cảm hứng từ HTTP. Do đó, REST có thể được sử dụng ở bất cứ nơi nào HTTP có thể.
5 nền tảng kiến thức trên đều ít nhiều có liên quan đến hệ điều hành Android. Để trở thành một nhà phát triển Android thành thạo bạn nên dành thời gian tìm hiểu các kiến thức này, đi kèm với việc thực hành.
Bài viết đã cung cấp cho bạn các kiến thức hỗ trợ nhưng bạn mới bắt đầu học lập trình Android từ A-Z.
Ngoài ra, bạn có thể tham gia khóa học lập trình cấp tốc Onschool Bootcamp để biết thêm nhiều kiến thức về lập trình Android.
Chúc bạn thành công!
Các chia sẻ của cựu học viên Onschool Bootcamp?
Danh mục bài viết
- Kiến thức lập trình
- Cộng đồng học viên
- Chia sẻ học viên