Lập trình Android trên điện thoại
Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người. Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất. Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi. Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook
Tài liệu này hướng lập trình Android cho người mới bắt đầu. Sử dụng công cụ Android Studio. Đảm bảo rằng bạn đã cài đặt Android Studio, nếu chưa cài bạn có thể xem hướng dẫn tại: Trong lần chạy đầu tiên, Android Studio hỏi bạn có nhập khẩu các sét đặt từ phiên bản Android Studio mà bạn có thể đã cài đặt trước đó hay không. Bạn có thể chọn NO.
Lựa chọn một Theme mà bạn thích:
Trong lần chạy đầu tiên, Android cần download một vài thành phần. Bạn cần chờ đợi cho tới khi tiến trình download và cài đặt hoàn thành.
Trước hết bạn cần tạo một Project đầu tiên, và chạy nó thành công.
Project của bạn đã được tạo ra.
Đảm bảo rằng bạn đã cài đặt một thiết bị ảo (Một chiếc điện thoại giả lập), nó cần thiết để triển khai ứng dụng của bạn.
Nếu bạn không nhìn thấy bấy kỳ một thiết bị ảo nào trên danh sách xổ xuống, bạn cần tạo nó, hãy xem hướng dẫn dưới đây:
Màn hình mô phỏng đã hiển thị cái điện thoại, và ghi ra dòng chữ "Hello World".
Nếu ứng dụng chạy lỗi (hoặc chờ mãi không thấy cửa sổ thiết bị mô phỏng) hoặc bạn thấy thông báo dưới đây, nghĩa là bạn chưa cài đặt Intel Emulator Accelerator, bạn cần phải cài đặt nó:
Bạn cần phải cài đặt phần mềm quản lý tăng tốc phần cứng của Intel: Đây là hình ảnh project của bạn trên Android Studio:
Dù thành phần bạn phát triển như một phần của ứng dụng của bạn, bạn phải khai báo tất cả các thành phần của nó trong một AndroidManifest.xml. Tập tin này hoạt động như một giao tiếp giữa hệ điều hành Android và ứng dụng của bạn, vì vậy nếu bạn không khai báo thành phần của bạn trong tập tin này, sau đó nó sẽ không được xem xét bởi các hệ điều hành. Ví dụ, một file manifest mặc định sẽ trông giống như file sau:
Bạn cần hiểu thêm một chút về các ảnh trong thư mục mipmap, hãy xem hình ảnh dưới đây, có một file ảnh trong thư mục mipmap.
Một trong các vấn đề mà tôi thỉnh thoảng bắt gặp khi sử dụng ứng dụng Andorid là tôi thấy các ảnh mờ, nhòe, hoặc giãn không chuẩn. Các giải pháp cho vấn đề này là tạo ra một thư mục mipmap cho mỗi mật độ (density) điểm ảnh mà Android hỗ trợ, và để các hình ảnh thu nhỏ một cách chính xác. Có 6 dẫy mật độ khác nhau (đo theo số điểm ảnh trên 1 inch) mà Android hỗ trợ:
Trước hết Activity là gì?
Activity là một mã Java có hỗ trợ một màn hình hoặc giao diện người dùng. Nói cách khác, xây dựng khối của giao diện người dùng là một Activity. Chẳng hạn lớp MainActivity là một Activity nó mở rộng từ một Activity có sẵn trong thư viện Android. Hình dưới đây minh họa vòng đời của một Activity.
Để dễ hiểu hơn bạn có thể sửa đổi lại code của class MainActivity, ghi đè các phương thức onStart(), onResume(),... thêm vào các thông báo (message) chứng tỏ phương thức đó vừa được chạy. Sau đó chạy lại ứng dụng và theo dõi các quá trình trong vòng đời của Activity hoạt động thế nào. package org.o7planning.helloandroid; import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.os.Bundle; public class MainActivity extends AppCompatActivity { public static final String TAG ="MyMessage"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Print Log Log.i(TAG,"onCreate"); } @Override protected void onStop() { super.onStop(); // Print Log Log.i(TAG,"onStop"); } @Override protected void onDestroy() { super.onDestroy(); // Print Log Log.i(TAG,"onDestroy"); } @Override protected void onPause() { super.onPause(); // Print Log Log.i(TAG,"onPause"); } @Override protected void onResume() { super.onResume(); // Print Log Log.i(TAG,"onResume"); } @Override protected void onStart() { super.onStart(); // Print Log Log.i(TAG,"onStart"); } @Override protected void onRestart() { super.onRestart(); // Print Log Log.i(TAG,"onRestart"); } } Chạy lại ứng dụng của bạn, và bạn thấy các message được ghi ra trên cửa sổ logcat.
Bạn có thể sét đặt bộ lọc để logcat chỉ hiển thị các message của bạn.
Bây giờ cửa sổ logcat chỉ hiển thị các message của bạn.
Màn hình điện thoại của bạn:
Bạn đã vừa chạy ứng dụng Android đầu tiên thành công, và bây giờ chúng ta sẽ nhìn lại Android đã hoạt động thế nào từ khi ứng dụng được gọi.
Bạn cần biết rằng những gì bạn nhìn thấy trên cửa sổ Project không phải là tất cả thành phần tham gia tạo nên ứng dụng của bạn. Có những thành phần được tạo ra một cách tự động bởi chương trình biên dịch. Và nó không hiển thị trên cửa sổ Project. Chẳng hạn dựa vào cấu trúc các file nguồn trong project của bạn trình biên dịch tạo ra một file nguồn R.java, file này định nghĩa ra các hằng số cho các nguồn tài nguyên trên project. Để xem file R.java trên Android Studio, mở class MainActivity, nhấn chuột phải vào R.layout.main_activity chọn Go To/Implementation(s) Chú ý: Android Studio >= 2.0 không còn cho phép bạn xem tập tin R.java, vì đây là tập tin được sinh ra tự động và không cho phép sửa đổi.
Các hằng số định nghĩa trong class R.java được tạo ra tương ứng với các tài nguyên trên Project:
Như vậy ở đâu đó trong Project, bạn có thể sử dụng các hằng số để tham chiếu các tài nguyên trong project. Chẳng hạn R.layout.activity_main là một hằng số ám chỉ file activity_main.xml trong thư mục res/layout.
Có thể lúc này bạn đang nghĩ rằng activity_main.xml là file tạo ra giao diện của ứng dụng. Điều đó đúng 50%, thực chất activity_main.xml là một file định nghĩa ra các thực thể tham gia vào giao diện của ứng dụng, và chúng sắp xếp thế nào trên màn hình. Activity sẽ đọc file này và vẽ lên giao diện ứng dụng. Như vậy bản chất giao diện của ứng dụng do Activity tạo nên. Đây là đoạn code Activity đọc file main_activity.xml để tạo ra giao diện. package org.o7planning.helloandroid; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { public static final String TAG ="MyMessage"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Đọc file activity_main.xml để vẽ ra giao diện người dùng. setContentView(R.layout.activity_main); } // ..... } Activity có thể không cần đọc file xml để tạo ra giao diện ứng dụng: package org.o7planning.helloandroid; import androidx.appcompat.app.AppCompatActivity; import android.graphics.Color; import android.os.Bundle; import android.widget.Button; import android.widget.RelativeLayout; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Layout RelativeLayout layout = new RelativeLayout(this); layout.setBackgroundColor(Color.GREEN); // Tạo Button Button button = new Button(this); button.setText("My Button"); // Add button to Layout layout.addView(button); // Content View setContentView(layout); } }
Android Studio phiên bản hiện tại không hỗ trợ bạn thiết kế giao diện trực quan trên Java. Nhưng nó hỗ trợ rất tốt bạn thiết kế giao diện trực quan trên file xml. Android Studio sẽ tạo ra mã XML cho bạn. Thực tế thiết kế giao diện trên XML sẽ làm ứng dụng của bạn dễ dàng bảo trì hơn. Quay trở lại với activity_main.xml, bạn dễ dàng thiết kế giao diện ứng dụng:
Mã XML được tự động sinh ra:
Đây là các khóa học trực tuyến bên ngoài website o7planning mà chúng tôi giới thiệu, nó có thể bao gồm các khóa học miễn phí hoặc giảm giá. |