Giao diện người dùng và nội dung cho hàng tỷ người dùng
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Đảm bảo rằng ứng dụng của bạn cung cấp một giao diện người dùng tương tác, phản hồi nhanh với hoạt động đầu vào của người dùng và nếu cần, hãy bù đắp cho việc khởi chạy chậm.
Đảm bảo rằng ứng dụng của bạn được thiết kế để dễ dàng bản địa hoá bằng cách điều chỉnh các biến thể giữa các ngôn ngữ: cho phép các biến thể về khoảng cách, mật độ, thứ tự, mức độ nhấn mạnh và cách diễn đạt. Ngoài ra, hãy đảm bảo rằng ngày, giờ và các đơn vị khác được quốc tế hoá và hiển thị theo chế độ cài đặt của điện thoại.
Giao diện người dùng nhanh và phản hồi tốt
Cảm nhận của người dùng về hiệu suất ứng dụng phần lớn được hình thành dựa trên khả năng phản hồi của ứng dụng. Ví dụ: tương tác với người dùng và màn hình sắc nét là 2 đặc điểm quan trọng của một ứng dụng hoạt động hiệu quả. Tại đây, bạn có thể tìm thấy các mẹo về cách tối ưu hoá những đặc điểm này và các khía cạnh khác về tốc độ và khả năng phản hồi của ứng dụng.
Phản hồi khi chạm vào tất cả các mục có thể chạm
- Phản hồi khi chạm mang lại cảm giác xúc giác cho giao diện người dùng. Bạn nên đảm bảo ứng dụng của mình cung cấp phản hồi khi chạm vào tất cả các phần tử có thể chạm để giảm độ trễ cảm nhận của ứng dụng càng nhiều càng tốt.
-
Tương tác phản hồi khuyến khích người dùng khám phá sâu hơn một ứng dụng bằng cách tạo ra các phản ứng kịp thời, hợp lý và thú vị trên màn hình đối với dữ liệu đầu vào của người dùng.
Tương tác linh hoạt giúp nâng cấp ứng dụng từ một dịch vụ cung cấp thông tin thành một trải nghiệm giao tiếp bằng nhiều phản hồi trực quan và xúc giác.
- Để biết thêm thông tin, hãy xem khoá đào tạo về Android về chủ đề Tuỳ chỉnh phản hồi khi chạm.
Giao diện người dùng phải luôn có tính tương tác
- Những ứng dụng không phản hồi khi thực hiện hoạt động trong nền sẽ có cảm giác chậm và làm giảm sự hài lòng của người dùng. Đảm bảo ứng dụng của bạn luôn có giao diện người dùng phản hồi bất kể hoạt động nào ở chế độ nền. Đạt được điều này bằng cách thực hiện các thao tác mạng hoặc mọi thao tác phức tạp trong một luồng nền – giữ cho luồng giao diện người dùng ở trạng thái rảnh nhất có thể.
- Các ứng dụng Material Design sử dụng những thay đổi tối thiểu về hình ảnh khi tải nội dung bằng cách biểu thị từng thao tác bằng một chỉ báo hoạt động duy nhất.
Tránh chặn hộp thoại bằng
chỉ báo tải.
- Trạng thái trống xảy ra khi một khung hiển thị không có nội dung nào để hiển thị. Đó có thể là một danh sách không có mục nào hoặc một cụm từ tìm kiếm không trả về kết quả nào. Tránh trạng thái trống bằng cách sử dụng nội dung bắt đầu, nội dung giáo dục hoặc nội dung phù hợp nhất.
Khi các lựa chọn này không áp dụng được, hãy hiển thị một hình ảnh không tương tác và một khẩu hiệu bằng văn bản cho người dùng biết họ sẽ thấy gì khi có nội dung để hiển thị.
- Để biết thêm thông tin, hãy xem khoá đào tạo Android về Duy trì khả năng thích ứng của ứng dụng.
Nhắm đến 60 khung hình/giây trên các thiết bị chi phí thấp
- Đảm bảo ứng dụng của bạn luôn chạy nhanh và mượt mà, ngay cả trên các thiết bị giá rẻ.
- Tình trạng vẽ nhiều lần có thể làm chậm đáng kể ứng dụng của bạn. Tình trạng này xảy ra khi các pixel được vẽ nhiều lần cho mỗi lượt truyền. Ví dụ: khi bạn có một hình ảnh có nút được đặt ở trên cùng. Mặc dù không thể tránh khỏi tình trạng vẽ chồng chéo, nhưng bạn nên giảm thiểu tình trạng này để đảm bảo tốc độ khung hình mượt mà. Thực hiện Gỡ lỗi mức vẽ quá GPU trên ứng dụng để đảm bảo mức này được giảm thiểu.
- Các thiết bị Android làm mới màn hình ở tốc độ 60 khung hình/giây (fps), tức là ứng dụng của bạn phải cập nhật màn hình trong khoảng 16 mili giây. Lập hồ sơ ứng dụng bằng các công cụ trên thiết bị để xem liệu ứng dụng của bạn có đáp ứng mức trung bình 16 mili giây này hay không và thời điểm ứng dụng không đáp ứng.
- Giảm hoặc xoá ảnh động trên các thiết bị giá rẻ để giảm gánh nặng cho CPU và GPU của thiết bị. Để biết thêm thông tin, hãy xem phần Cải thiện hiệu suất bố cục.
- Hệ phân cấp khung hiển thị hiệu quả có thể tăng tốc ứng dụng mà không làm tăng mức sử dụng bộ nhớ của ứng dụng. Để biết thêm thông tin, hãy xem phần Hiệu suất và hệ phân cấp khung hiển thị.
Sử dụng màn hình khởi động cho các ứng dụng khởi động chậm
- Màn hình khởi chạy là trải nghiệm đầu tiên của người dùng về ứng dụng của bạn.
Việc hiển thị một canvas trống khi khởi chạy ứng dụng sẽ làm tăng cảm nhận về thời gian tải của ứng dụng. Vì vậy, hãy cân nhắc sử dụng giao diện người dùng phần giữ chỗ hoặc màn hình khởi chạy có thương hiệu để giảm thời gian tải cảm nhận được.
- Giao diện người dùng
giữ chỗ là hiệu ứng chuyển đổi khi khởi chạy liền mạch nhất, phù hợp cho cả hoạt động khởi chạy ứng dụng và chuyển đổi hoạt động trong ứng dụng.
-
Màn hình khởi động có gắn thương hiệu giúp thương hiệu xuất hiện trong chốc lát, giải phóng giao diện người dùng để tập trung vào nội dung.
- Cách tốt nhất để giải quyết vấn đề tốc độ khởi động chậm là không để xảy ra vấn đề này. Hiệu suất khi khởi động cung cấp thông tin có thể giúp bạn tăng tốc thời gian khởi động ứng dụng.
Các phương pháp hay nhất về giao diện người dùng
-
Material Design là một ngôn ngữ hình ảnh tổng hợp các nguyên tắc kinh điển để tạo nên một kiểu thiết kế hiệu quả nhưng có sự cải tiến và sự tham gia của công nghệ và khoa học. Material Design cung cấp một hệ thống cơ bản duy nhất giúp tạo ra trải nghiệm thống nhất trên nhiều nền tảng và kích thước thiết bị. Cân nhắc sử dụng các thành phần chính của Material Design để người dùng biết một cách trực quan cách sử dụng ứng dụng của bạn.
- Các thành phần Material Design có sẵn để sử dụng trong Thư viện hỗ trợ Material Design. Các thành phần này được hỗ trợ trong Android 2.1 (API cấp 7) trở lên.
Bản địa hoá
- Người dùng của bạn có thể ở bất kỳ nơi nào trên thế giới và ngôn ngữ chính của họ có thể không phải là ngôn ngữ của bạn. Nếu bạn không trình bày ứng dụng bằng ngôn ngữ mà người dùng có thể đọc, thì đó là một cơ hội bị bỏ lỡ. Do đó, bạn nên bản địa hoá ứng dụng cho các ngôn ngữ chính theo khu vực.
- Để tìm hiểu thêm, hãy truy cập khoá đào tạo Android về Hỗ trợ nhiều ngôn ngữ và xem danh sách kiểm tra bản địa hoá.
- Kể từ Android 7.0 (API cấp 24), khung Android sẽ cung cấp một tập hợp con của API ICU4J. Tập hợp con này có thể giúp bạn bản địa hoá ứng dụng sang nhiều ngôn ngữ. Để biết thêm thông tin, hãy xem
API khung Android ICU4J.
Tài nguyên khác
Để tìm hiểu thêm về chủ đề này, hãy xem các tài nguyên bổ sung sau đây:
Chủ đề khác
Bài đăng trên blog
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# UI and content for billions\n\nMake sure that your app offers an interactive UI that responds quickly to user input and, if necessary, compensates for a slow launch.\nEnsure that your app is designed to be easily localized by\naccommodating the variations between languages: allow for spacing, density,\norder, emphasis, and wording variations. Also make sure that date, time, and\nother units are internationalized and displayed according to the phone's\nsettings.\n\nFast and responsive user interface\n----------------------------------\n\n\u003cbr /\u003e\n\n\nThe user's perception of app performance is formed in large part by the app's\nresponsiveness. For example, interaction with the user and a crisp display are two important\ncharacteristics of a performant app. Here you can find tips on how to optimize these and\nother aspects of an app's speed and responsiveness.\n\n### Touch feedback on all touchable items\n\n- Touch feedback adds a tactile feeling to the user interface. You should ensure your app provides touch feedback on all touchable elements to reduce the perceived app latency as much as possible.\n- [Responsive interaction](https://material.io/guidelines/motion/material-motion.html) encourages deeper exploration of an app by creating timely, logical, and delightful screen reactions to user input. Responsive interaction elevates an app from an information-delivery service to an experience that communicates using multiple visual and tactile responses.\n- For more information, see the Android training on [Customizing Touch\n Feedback](/training/material/animations#Touch).\n\n### UI should always be interactive\n\n- Apps that are unresponsive when performing background activity feel slow and reduce user satisfaction. Ensure your app always has a responsive UI regardless of any background activity. Achieve this by performing network operations or any heavy-duty operations in a background thread---keep the UI thread as idle as you can.\n- Material Design apps use minimal visual changes when loading content by representing each operation with a single activity indicator. Avoid blocking dialogs with [loading indicators](https://material.io/guidelines/components/progress-activity.html).\n- [Empty\n states](https://material.io/guidelines/patterns/empty-states.html) occur when a view has no content to show. It might be a list that has no items or a search that returns no results. Avoid empty states using starter, educational, or best match content. When these options aren't applicable display a non-interactive image and a text tagline that tell the user what they'll see when there is something to display.\n- For more information, see the Android training on [Keeping Your App\n Responsive](/training/articles/perf-anr).\n\n### Target 60 frames per second on low-cost devices\n\n- Ensure that your app always runs fast and smoothly, even on low-cost devices.\n- Overdraw can significantly slow down your app---it occurs when the pixels are being drawn more than once per pass. An example of this is when you have an image with a button placed on top of it. While some overdraw is unavoidable, it should be minimized to ensure a smooth frame rate. Perform [Debug\n GPU overdraw](/tools/performance/debug-gpu-overdraw) on your app to ensure it's minimized.\n- Android devices refresh the screen at 60 frames per second (fps), meaning your app has to update the screen within roughly 16 milliseconds. [Profile\n your app](/studio/profile/dev-options-rendering) using on-device tools to see if and when your app is not meeting this 16 ms average.\n- Reduce or remove animations on low-cost devices to lessen the burden on the device's CPU and GPU. For more information, see [Improve\n layout performance](/develop/ui/views/layout/improving-layouts).\n- An efficient view hierarchy can speed up your app without increasing the app's memory footprint. For more information, see [Performance\n and View Hierarchies.](/topic/performance/optimizing-view-hierarchies)\n\n### Use a launch screen on slow to start apps\n\n- The launch screen is a user's first experience of your application. Displaying a blank canvas while launching your app increases the perception of its loading time, so consider using a placeholder UI or a branded launch screen to reduce the perceived loading time.\n- A[placeholder UI](https://material.io/design/communication/launch-screen.html#placeholder-ui) is the most seamless launch transition, appropriate for both app launches and in-app activity transitions.\n- [Branded launch screens](/guide/topics/ui/splash-screen) provide momentary brand exposure, freeing the UI to focus on content.\n- The best way to deal with slow start speeds is not to have them. [Launch-Time Performance](/topic/performance/launch-time) provides information that may help you speed up your app's launch time.\n\nUser interface best practices\n-----------------------------\n\n- [Material Design](https://material.io/guidelines/material-design/introduction.html) is a visual language that synthesizes the classic principles of good design with the innovation and possibility of technology and science. Material Design provides a single underlying system that allows for a unified experience across platforms and device sizes. Consider using key Material Design components so that users intuitively know how to use your app.\n- Ready-to-use Material Design components are available in the [Material Design Support\n library](/topic/libraries/support-library/features#material-design). These components are supported in Android 2.1 (API level 7) and above.\n\nLocalization\n------------\n\n- Your users could be from any part of the world and their first language may not be yours. If you don't present your app in a language that your users can read, it is a missed opportunity. You should therefore localize your app for key regional languages.\n- To learn more, visit the Android training on [Supporting\n Different Languages](/training/basics/supporting-devices/languages) and see the [localization checklist](/distribute/tools/localization-checklist).\n- Starting from Android 7.0 (API level 24), the Android framework makes available a subset of the [ICU4J APIs](http://userguide.icu-project.org/), which can help you localize your app into multiple languages. For more information, see [ICU4J Android Framework APIs.](/guide/topics/resources/icu4j-framework)\n\n\u003cbr /\u003e\n\nAdditional resources\n--------------------\n\nTo learn more about this topic, view the following additional resources:\n\n### Further topics\n\n- [Keeping your app responsive](/training/articles/perf-anr)\n- [Improving layout performance](/training/improving-layouts)\n- [Introduction to animations](/training/animation/overview)\n\n### Blog posts\n\n- [Writing for global audiences](https://medium.com/google-design/writing-for-global-audiences-d339d23e9612)"]]