Kotlin trên Android cơ bản 10.3: Thiết kế dành cho tất cả mọi người

Lớp học lập trình này nằm trong khóa học về Khái niệm cơ bản về Android Kotlin. Bạn sẽ nhận được nhiều giá trị nhất từ khóa học này nếu bạn làm việc qua các lớp học lập trình theo trình tự. Tất cả các lớp học lập trình trong khóa học đều có trên trang đích của các lớp học lập trình cơ bản về Android Kotlin.

Giới thiệu

Để giúp ứng dụng được nhiều người dùng sử dụng nhất, cho dù bạn đang phát triển vì niềm vui của ứng dụng đó hay vì mục đích kinh doanh. Có nhiều thứ nguyên để thực hiện điều này.

  • Hỗ trợ các ngôn ngữ từ phải sang trái. Châu Âu và nhiều ngôn ngữ khác đọc từ trái sang phải, còn các ứng dụng bắt nguồn từ các ngôn ngữ đó thường được thiết kế phù hợp với những ngôn ngữ đó. Nhiều ngôn ngữ khác có số lượng người nói lớn đọc từ phải sang trái, chẳng hạn như tiếng Ả Rập. Làm cho ứng dụng của bạn hoạt động với các ngôn ngữ từ phải sang trái (RTL) để tăng đối tượng tiềm năng.
  • Quét tìm khả năng tiếp cận. Việc đoán xem người khác có thể trải nghiệm ứng dụng của bạn như thế nào là một lựa chọn với các sai lầm. Ứng dụng Trình quét hỗ trợ tiếp cận loại bỏ tình huống phỏng đoán và phân tích ứng dụng của bạn để xác định những điểm cần cải thiện.
  • Thiết kế TalkBack cho nội dung mô tả. Người khiếm thị thường phổ biến hơn mọi người và nhiều người dùng không chỉ là người khiếm thị sử dụng trình đọc màn hình. Nội dung mô tả nội dung là các cụm từ để trình đọc màn hình thông báo khi người dùng tương tác với một thành phần trên màn hình.
  • Hỗ trợ chế độ ban đêm. Đối với nhiều người dùng khiếm thị, việc thay đổi màu màn hình sẽ cải thiện độ tương phản và giúp họ làm việc trực quan với ứng dụng của bạn. Android giúp hỗ trợ chế độ ban đêm một cách dễ dàng và bạn luôn phải hỗ trợ chế độ ban đêm để cung cấp cho người dùng một giải pháp thay thế đơn giản như màu sắc của màn hình mặc định.

Trong lớp học lập trình này, bạn khám phá từng tùy chọn và thêm tùy chọn hỗ trợ cho ứng dụng này vào ứng dụng TeamYouTube Finder.

Bạn cũng tìm hiểu cách sử dụng chip với ứng dụng Android. Bạn có thể sử dụng khối để làm cho ứng dụng thú vị hơn trong khi vẫn cho phép truy cập ứng dụng.

Kiến thức bạn cần có

Bạn cần thông thạo:

  • Cách tạo các ứng dụng có các hoạt động và mảnh và di chuyển giữa các mảnh chuyển dữ liệu.
  • Dùng các chế độ xem và nhóm chế độ xem để bố trí giao diện người dùng, cụ thể là RecyclerView.
  • Cách sử dụng các Thành phần cấu trúc, bao gồm ViewModel, với cấu trúc đề xuất để tạo ứng dụng có cấu trúc tốt và hiệu quả.
  • Liên kết dữ liệu, coroutine và cách xử lý lượt nhấp chuột.
  • Cách kết nối Internet và lưu dữ liệu vào bộ nhớ đệm trên máy bằng cơ sở dữ liệu Phòng.
  • Cách đặt thuộc tính chế độ xem cũng như cách trích xuất tài nguyên và sử dụng tài nguyên từ tệp tài nguyên XML.
  • Cách dùng kiểu và giao diện để điều chỉnh diện mạo của ứng dụng
  • Cách sử dụng thành phần Material, tài nguyên thứ nguyên và màu tùy chỉnh.

Kiến thức bạn sẽ học được

  • Cách cung cấp ứng dụng cho nhiều người dùng nhất.
  • Cách thiết lập để ứng dụng của bạn hoạt động với các ngôn ngữ từ phải sang trái (RTL).
  • Cách đánh giá khả năng hỗ trợ tiếp cận của ứng dụng.
  • Cách sử dụng nội dung mô tả nội dung để giúp ứng dụng của bạn hoạt động tốt hơn với trình đọc màn hình.
  • Cách dùng khối.
  • Cách giúp ứng dụng của bạn hoạt động với chế độ tối.

Bạn sẽ thực hiện

  • Đánh giá và mở rộng một ứng dụng cụ thể để cải thiện khả năng hỗ trợ tiếp cận bằng cách thiết lập ứng dụng đó hỗ trợ các ngôn ngữ từ phải sang trái.
  • Quét ứng dụng của bạn để xác định những điểm cần cải thiện về khả năng hỗ trợ tiếp cận.
  • Sử dụng nội dung mô tả nội dung cho hình ảnh.
  • Tìm hiểu cách sử dụng hình vẽ.
  • Thêm khả năng sử dụng chế độ ban đêm vào ứng dụng của bạn.

Ứng dụng bắt đầu công cụ tìm kiếm cpm xây dựng dựa trên mọi kiến thức bạn đã học được cho đến nay trong khóa học này.

Ứng dụng dùng ConstraintLayout để bố trí ba màn hình. Hai trong số các màn hình này chỉ là tệp bố cục mà bạn sẽ sử dụng để khám phá màu sắc và văn bản trên Android.

Màn hình thứ ba là công cụ tìm kiếm cpm. vCPM, hay Nhóm nhà phát triển của Google, là những cộng đồng các nhà phát triển tập trung vào các công nghệ của Google, bao gồm cả Android. TeamYouTube trên khắp thế giới tổ chức những buổi gặp gỡ, hội nghị, sự kiện nghiên cứu và các sự kiện khác.

Khi phát triển ứng dụng này, bạn sẽ hoạt động trong danh sách vCPM thực sự. Màn hình trình tìm kiếm sử dụng thông tin vị trí của thiết bị để sắp xếp các ARPDAU theo khoảng cách.

Nếu bạn may mắn và có một JAWS ở khu vực của mình, bạn có thể xem trang web và đăng ký tham gia các sự kiện của họ! Sự kiện trong nhóm hreflang là một cách tuyệt vời để gặp gỡ các nhà phát triển Android khác và học các phương pháp hay nhất trong ngành không phù hợp với khóa học này.

Ảnh chụp màn hình bên dưới cho thấy ứng dụng của bạn sẽ thay đổi như thế nào từ đầu đến cuối của lớp học lập trình này.

Sự khác biệt chính giữa ngôn ngữ từ trái sang phải (LTR) và ngôn ngữ từ phải sang trái (RTL) là hướng của nội dung được hiển thị. Khi hướng giao diện người dùng được thay đổi từ LTR thành RTL (hoặc ngược lại), thì hướng này thường được gọi là phản chiếu. Tính năng phản chiếu ảnh hưởng đến hầu hết màn hình, bao gồm cả biểu tượng văn bản, biểu tượng trường văn bản, bố cục và biểu tượng có thông tin đường đi (chẳng hạn như mũi tên). Các mục khác không được phản chiếu, chẳng hạn như số (đồng hồ, số điện thoại), biểu tượng không có hướng (chế độ trên máy bay, Wi-Fi), các nút điều khiển chế độ phát, hầu hết các biểu đồ và đồ thị.

Những ngôn ngữ sử dụng hướng văn bản RTL được hơn một tỷ người trên toàn thế giới sử dụng. Các nhà phát triển Android ở khắp nơi trên thế giới, vì vậy, một ứng dụng phí Finder cần hỗ trợ ngôn ngữ RTL.

Bước 1: Thêm hỗ trợ RTL

Trong bước này, bạn tạo ứng dụng Trình tìm kiếm nhân viên mới của Google để hoạt động với các ngôn ngữ từ phải sang trái.

  1. Tải và chạy ứng dụng pagetypeFinderMaterial (đây là ứng dụng dành cho người mới bắt đầu đối với lớp học lập trình này hoặc tiếp tục từ mã cuối cùng của lớp học lập trình trước đó).
  2. Mở Android Manifest.
  3. Trong phần <application>, hãy thêm mã sau để chỉ định rằng ứng dụng hỗ trợ RTL.
<application
        ...
        android:supportsRtl="true">
  1. Mở tệp activity_main.xml trong thẻ Thiết kế.
  2. Từ trình đơn thả xuống Ngôn ngữ xem trước, hãy chọn Xem trước từ phải sang trái. (Nếu bạn không tìm thấy trình đơn này, hãy mở rộng ngăn hoặc đóng ngăn Thuộc tính để khám phá).

  1. Trong Bản xem trước, hãy nhận thấy rằng tiêu đề "; Finder Finder" đã di chuyển sang bên phải và phần còn lại của màn hình vẫn giữ nguyên. Nhìn chung, bạn có thể vượt qua màn hình này. Tuy nhiên, căn chỉnh trong chế độ xem văn bản hiện không chính xác vì chế độ xem này được căn chỉnh sang trái, thay vì phải.

  1. Để thiết bị này hoạt động trên thiết bị của bạn, trong phần Cài đặt của trình mô phỏng hoặc thiết bị, trong phần Tùy chọn cho nhà phát triển, hãy chọn Bố cục RTL buộc. (Nếu bạn cần bật Tùy chọn cho nhà phát triển, hãy tìm Số bản dựng và nhấp vào đó cho đến khi bạn nhận được thông báo ngắn cho biết bạn là nhà phát triển. Thao tác này khác nhau tùy theo thiết bị và phiên bản hệ thống Android.)

  1. Chạy ứng dụng và xác minh trên thiết bị rằng màn hình chính xuất hiện giống như trong Xem trước. Bạn có thể thấy FAB hiện đã được chuyển sang bên trái và trình đơn Hamburger ở bên phải!
  2. Trong ứng dụng, hãy mở ngăn điều hướng rồi chuyển đến màn hình Tìm kiếm. Như được trình bày bên dưới, các biểu tượng vẫn ở bên trái và không có văn bản nào hiển thị. Hóa ra văn bản nằm ngoài màn hình, ở bên trái biểu tượng. Điều này là do mã sử dụng các thông tin tham chiếu đến màn hình bên trái/phải trong thuộc tính chế độ xem và hạn chế về bố cục.

Bước 2: Sử dụng điểm bắt đầu và kết thúc thay vì trái và phải

"trái" và "right" trên màn hình (khi bạn đối mặt với màn hình) không thay đổi, ngay cả khi hướng của văn bản thay đổi. Ví dụ: layout_constraintLeft_toLeftOf luôn ràng buộc bên trái của phần tử ở bên trái màn hình. Trong trường hợp ứng dụng của bạn, văn bản nằm ngoài màn hình bằng các ngôn ngữ RTL, như được hiển thị trong ảnh chụp màn hình ở trên.

Để khắc phục sự cố này, thay vì "left" và "right," sử dụng thuật ngữ StartEnd. Thuật ngữ này sẽ đặt phần đầu văn bản và phần cuối của văn bản phù hợp với hướng của văn bản trong ngôn ngữ hiện tại, để lề và bố cục nằm ở đúng vùng của màn hình.

  1. Open List_item.xml.
  2. Thay thế mọi tệp đối chiếu bằng LeftRight bằng các tệp đối chiếu đến StartEnd.
app:layout_constraintStart_toStartOf="parent"

app:layout_constraintStart_toEndOf="@+id/gdg_image"
app:layout_constraintEnd_toEndOf="parent"
  1. Thay thế layout_marginLeft của ImageView bằng layout_marginStart. Thao tác này di chuyển lề đến vị trí chính xác để di chuyển biểu tượng ra khỏi cạnh màn hình.
<ImageView
android:layout_marginStart="
?
  1. Mở fragment_gdg_list.xml. Kiểm tra danh sách vCPM trong ngăn Xem trước. Xin lưu ý rằng biểu tượng vẫn trỏ sai hướng vì biểu tượng không được phản chiếu (Nếu biểu tượng không được phản chiếu, hãy đảm bảo bạn vẫn đang xem từ phải sang trái). Theo nguyên tắc Material Design, các biểu tượng không được phản chiếu.
  2. Mở tệp res/drawable/ic_gdg.xml.
  3. Trong dòng đầu tiên của mã XML, hãy tìm và xóa android:autoMirrored="true" để tắt tính năng phản chiếu.
  4. Kiểm tra thẻ Xem trước hoặc chạy lại ứng dụng và mở màn hình Tìm kiếm trên trang doanh nghiệp. Bố cục sẽ được sửa ngay!

Bước 3: Để Android Studio làm giúp bạn

Trong bài tập trước, bạn đã thực hiện các bước đầu tiên để hỗ trợ các ngôn ngữ RTL. Rất may là Android Studio có thể quét ứng dụng và thiết lập nhiều kiến thức cơ bản cho bạn.

  1. Trong list_item.xml, trong TextView, hãy thay đổi layout_marginStart trở lại layout_marginLeft để máy quét có nội dung cần tìm.
<TextView
android:layout_marginLeft="@dimen/spacing_normal"
  1. Trong Android Studio, hãy chọn Tái cấu trúc và gt; Thêm hỗ trợ RTL nếu có thể và đánh dấu vào các hộp để cập nhật tệp kê khai cũng như tệp bố cục để sử dụng thuộc tính bắt đầu và kết thúc.

  1. Trong ngăn Xem trước tái cấu trúc, tìm thư mục ứng dụng và mở rộng cho đến khi mở tất cả chi tiết.
  2. Trong thư mục ứng dụng, hãy lưu ý rằng layout_marginLeft mà bạn vừa thay đổi được liệt kê dưới dạng mã để tái cấu trúc.

  1. Xin lưu ý rằng bản xem trước này cũng liệt kê các tệp hệ thống và thư viện. Nhấp chuột phải vào layoutlyout-watch-v20 cũng như bất kỳ thư mục nào khác không thuộc ứng dụng và chọn Loại trừ khỏi menu ngữ cảnh.

  1. Hãy tiếp tục và tái cấu trúc ngay bây giờ. (Nếu bạn nhận được cửa sổ bật lên về tệp hệ thống, hãy đảm bảo bạn đã loại trừ tất cả thư mục không thuộc mã ứng dụng của mình.)
  1. Xin lưu ý rằng bạn đã thay đổi layout_marginLeft thành layout_marginStart.

Bước 3: Khám phá các thư mục để biết ngôn ngữ

Cho đến nay, bạn vừa thay đổi hướng của ngôn ngữ mặc định được dùng cho ứng dụng. Đối với ứng dụng sản xuất, bạn sẽ gửi tệp strings.xml để trình biên dịch dịch sang ngôn ngữ mới. Đối với lớp học lập trình này, ứng dụng cung cấp một tệp strings.xml bằng tiếng Tây Ban Nha (chúng tôi đã dùng Google Dịch để tạo bản dịch, nên các công cụ này không hoàn hảo).

  1. Trong Android Studio, hãy chuyển chế độ xem dự án sang Tệp dự án.
  2. Mở rộng thư mục res và chú ý các thư mục cho res/valuesres/values-es. "es" trong tên thư mục là mã ngôn ngữ dành cho tiếng Tây Ban Nha. Các thư mục values-"language code" chứa các giá trị cho từng ngôn ngữ được hỗ trợ. Thư mục values không có phần mở rộng chứa các tài nguyên mặc định sẽ được áp dụng theo cách khác.

  1. Trong tệp values-es, hãy mở strings.xml và nhận thấy rằng tất cả các chuỗi đều bằng tiếng Tây Ban Nha.
  2. Trong Android Studio, hãy mở activity_main.xml trong thẻ Thiết kế.
  3. Trong trình đơn thả xuống Ngôn ngữ để xem trước, hãy chọn Tiếng Tây Ban Nha. Giờ đây, văn bản của bạn phải bằng tiếng Tây Ban Nha.

  1. [Không bắt buộc] Nếu bạn thành thạo ngôn ngữ từ phải sang trái, hãy tạo thư mục valuesstrings.xml bằng ngôn ngữ đó, đồng thời kiểm tra cách thư mục này xuất hiện trên thiết bị của bạn.
  2. [Tùy chọn] Thay đổi cài đặt ngôn ngữ trên thiết bị của bạn và chạy ứng dụng. Đảm bảo rằng bạn không thay đổi thiết bị của mình thành ngôn ngữ mà bạn không đọc, vì điều này sẽ gây khó khăn cho việc hoàn tác!

Trong nhiệm vụ trước, bạn đã thay đổi ứng dụng của mình theo cách thủ công, sau đó sử dụng Android Studio để kiểm tra thêm về việc cải thiện RTL.

Ứng dụng Trình quét hỗ trợ tiếp cận là ứng dụng phù hợp nhất với bạn để giúp ứng dụng của bạn dễ sử dụng. Công cụ này quét ứng dụng trên thiết bị đích và đề xuất những điểm cải tiến, chẳng hạn như mở rộng phạm vi tiếp cận của mục tiêu, tăng độ tương phản và cung cấp thông tin mô tả cho hình ảnh để giúp ứng dụng của bạn dễ tiếp cận hơn. Trình quét trợ năng do Google sản xuất và bạn có thể cài đặt ứng dụng này trên Cửa hàng Play.

Bước 1: Cài đặt và chạy Trình quét trợ năng

  1. Mở Cửa hàng Play và đăng nhập nếu cần. Bạn có thể thực hiện việc này trên thiết bị thực hoặc trình mô phỏng. Lớp học lập trình này sử dụng trình mô phỏng.
  1. Trong Cửa hàng Play, hãy tìm Trình quét trợ năng của Google LLC. Hãy đảm bảo bạn tải đúng ứng dụng do Google cấp, vì quá trình quét đòi hỏi nhiều quyền!

  1. Cài đặt trình quét trên trình mô phỏng.
  2. Sau khi cài đặt, hãy nhấp vào Mở.
  3. Nhấp vào Bắt đầu.
  4. Nhấp vào OK để bắt đầu thiết lập Trình quét trợ năng trong phần Cài đặt.

  1. Nhấp vào Trình quét trợ năng để chuyển đến phần cài đặt Hỗ trợ tiếp cận của thiết bị.

  1. Nhấp vào Sử dụng dịch vụ để bật dịch vụ đó.

  1. Làm theo hướng dẫn trên màn hình và cấp tất cả các quyền.
  2. Sau đó, nhấp vào OK rồi quay lại màn hình chính. Bạn có thể thấy nút màu xanh lam với dấu kiểm ở vị trí nào đó trên màn hình. Khi nhấp vào nút này, trình duyệt sẽ được chạy thử nghiệm ở nền trước. Bạn có thể đặt lại vị trí của nút bằng cách kéo nút đó. Nút này luôn ở đầu mọi ứng dụng, vì vậy, bạn có thể kích hoạt thử nghiệm bất kỳ lúc nào.

  1. Mở hoặc chạy ứng dụng.
  2. Nhấp vào nút màu xanh dương rồi chấp nhận các quyền và cảnh báo bảo mật bổ sung.

Lần đầu tiên bạn nhấp vào biểu tượng Trình quét trợ năng, ứng dụng sẽ yêu cầu cấp quyền để hiển thị mọi thứ trên màn hình của bạn. Đây có vẻ là một quyền rất đáng sợ và đúng là như vậy.

Bạn tuyệt đối không bao giờ được cấp quyền như quyền này, vì quyền đó cho phép các ứng dụng đọc email hoặc thậm chí lấy thông tin tài khoản ngân hàng của bạn! Tuy nhiên, để Trình quét hỗ trợ tiếp cận thực hiện được công việc, thì ứng dụng cần kiểm tra ứng dụng theo cách người dùng sẽ thực hiện.

  1. Nhấp vào nút màu xanh dương và đợi cho đến khi phân tích xong. Bạn sẽ thấy nội dung như ảnh chụp màn hình dưới đây, với tiêu đề và FAB được đóng hộp màu đỏ. Cột này cho biết hai nội dung đề xuất để cải thiện khả năng hỗ trợ tiếp cận trên màn hình này.

  1. Nhấp vào hộp xung quanh Trình quản lý thẻ của Google dành cho doanh nghiệp nhỏ. Thao tác này sẽ mở ra một ngăn có thông tin bổ sung, như minh họa bên dưới, cho biết có vấn đề với độ tương phản của hình ảnh.
  2. Mở rộng thông tin Độ tương phản hình ảnh và công cụ đề xuất các biện pháp khắc phục.
  3. Nhấp vào các mũi tên ở bên phải để xem thông tin cho mục tiếp theo.

  1. Trong ứng dụng của bạn, hãy chuyển đến màn hình Đăng ký tham gia TeamYouTube rồi quét bằng ứng dụng Trình quét hỗ trợ tiếp cận. Thao tác này sẽ đưa ra khá nhiều đề xuất, như minh họa ở bên trái. 12, chính xác. Để công bằng, một số trong số đó là trùng lặp với các mục tương tự.
  2. Hãy nhấp vào biểu tượng "stack" trên thanh công cụ dưới cùng để xem danh sách tất cả nội dung đề xuất, như bên dưới trên ảnh chụp màn hình bên phải. Bạn sẽ giải quyết tất cả các vấn đề này trong lớp học lập trình này.

Bộ hỗ trợ tiếp cận của Android, một tập hợp ứng dụng của Google, có các công cụ giúp ứng dụng dễ sử dụng hơn. Công cụ này bao gồm các công cụ như TalkBack. TalkBack là trình đọc màn hình cung cấp phản hồi bằng âm thanh, xúc giác và lời nói, cho phép người dùng di chuyển và sử dụng nội dung trên thiết bị mà không cần nhìn vào mắt.

Thật ra TalkBack không chỉ bị người khiếm thị sử dụng mà còn bởi nhiều người khiếm thị khác. Hoặc thậm chí là những người chỉ muốn nghỉ ngơi!

Vì vậy, tính năng Hỗ trợ tiếp cận dành cho tất cả mọi người! Trong nhiệm vụ này, hãy dùng thử TalkBack và cập nhật ứng dụng để hoạt động hiệu quả với TalkBack.

Bước 1: Cài đặt và chạy Bộ hỗ trợ tiếp cận

TalkBack được cài đặt sẵn trên nhiều thiết bị thực, nhưng trên một trình mô phỏng, bạn cần cài đặt trình này.

  1. Mở Cửa hàng Play.
  2. Tìm Bộ hỗ trợ tiếp cận. Hãy đảm bảo đó là ứng dụng chính xác của Google.
  3. Nếu ứng dụng chưa được cài đặt, hãy cài đặt Bộ hỗ trợ tiếp cận.
  4. Để bật TalkBack trên thiết bị, hãy chuyển đến phần Cài đặt và gt; Hỗ trợ tiếp cận rồi bật TalkBack bằng cách chọn Sử dụng dịch vụ. Giống như trình quét trợ năng, TalkBack yêu cầu quyền để đọc nội dung trên màn hình. Sau khi bạn chấp nhận yêu cầu cấp quyền, TalkBack sẽ chào đón bạn bằng danh sách các hướng dẫn để sử dụng hiệu quả TalkBack.
  5. Tạm dừng tại đây và xem hướng dẫn nếu không có lý do nào khác ngoài việc tìm hiểu cách tắt TalkBack sau khi bạn hoàn tất.
  6. Để rời khỏi tài liệu hướng dẫn, hãy nhấp vào nút quay lại để chọn, sau đó nhấn đúp vào vị trí bất kỳ trên màn hình.
  1. Khám phá bằng ứng dụng TeamYouTube Finder với TalkBack. Hãy chú ý những nơi TalkBack cung cấp cho bạn thông tin hữu ích về màn hình hoặc một thành phần điều khiển. Bạn sẽ sửa lỗi này trong bài tập tiếp theo.

Bước 2: Thêm nội dung mô tả nội dung

Nhãn mô tả nội dung là nhãn mô tả giải thích ý nghĩa của các chế độ xem. Hầu hết các lượt xem của bạn đều phải có nội dung mô tả nội dung.

  1. Sau khi ứng dụng TeamYouTube Finder đang chạy và bật tính năng Talback, hãy chuyển đến màn hình Đăng ký để chạy TeamYouTube.
  2. Nhấn vào hình ảnh chính ... và không có gì xảy ra.
  3. Mở tệp add_gdg_fragment.xml.
  4. Trong ImageView, hãy thêm một thuộc tính trình mô tả nội dung như bên dưới. Chuỗi stage_image_description được cung cấp cho bạn trong tệp strings.xml.
android:contentDescription="@string/stage_image_description"
  1. Chạy ứng dụng của bạn.
  2. Chuyển đến phần Đăng ký để chạy TeamYouTube rồi nhấp vào hình ảnh đó. Bây giờ, bạn sẽ nghe thấy một đoạn mô tả ngắn về hình ảnh.
  3. [Không bắt buộc] Thêm nội dung mô tả nội dung cho những hình ảnh khác trong ứng dụng này. Trong ứng dụng chính thức, tất cả hình ảnh cần phải có nội dung mô tả nội dung.

Bước 3: Thêm các gợi ý vào trường văn bản có thể chỉnh sửa

Đối với các phần tử có thể chỉnh sửa (chẳng hạn như EditText), bạn có thể sử dụng android:hint trong tệp XML để giúp người dùng tìm ra nội dung cần nhập. Gợi ý luôn hiển thị trong giao diện người dùng vì đây là văn bản mặc định trong trường nhập dữ liệu.

  1. Vẫn ở trong tệp add_gdg_fragment.xml.
  2. Thêm nội dung mô tả và gợi ý nội dung bằng cách sử dụng mã bên dưới làm hướng dẫn.

Thêm vào textViewIntro:

android:contentDescription="@string/add_gdg"

Thêm tương ứng vào các văn bản chỉnh sửa:

android:hint="@string/your_name_label"

android:hint="@string/email_label"

android:hint="@string/city_label"

android:hint="@string/country_label"

android:hint="@string/region_label"
  1. Thêm mô tả nội dung cho labelTextWhy.
android:contentDescription="@string/motivation" 
  1. Thêm gợi ý vào EditTextWhy. Sau khi bạn gắn nhãn hộp chỉnh sửa, hãy thêm nội dung mô tả nội dung vào nhãn và cả gợi ý vào hộp.
android:hint="@string/enter_motivation"
  1. Thêm nội dung mô tả nội dung cho nút gửi. Tất cả các nút cần phải có phần mô tả điều gì sẽ xảy ra nếu người dùng nhấn.
android:contentDescription="@string/submit_button_description"
  1. Chạy ứng dụng của bạn khi bạn bật Talback và điền thông tin vào biểu mẫu để đăng ký chạy TeamYouTube.

Bước 4: Tạo nhóm nội dung

Đối với các tùy chọn kiểm soát trên giao diện người dùng mà TalkBack sẽ coi là một nhóm, bạn có thể sử dụng tính năng nhóm nội dung. Nội dung liên quan được nhóm lại với nhau sẽ được thông báo cùng nhau. Sau đó, người dùng công nghệ hỗ trợ sẽ không cần vuốt, quét hoặc chờ thường xuyên để khám phá tất cả thông tin trên màn hình. Điều này không ảnh hưởng đến cách các tùy chọn điều khiển xuất hiện trên màn hình.

Để nhóm các thành phần giao diện người dùng, hãy đặt các thành phần đó vào ViewGroup, chẳng hạn như LinearLayout. Trong ứng dụng pagetype Finder, các phần tử labelTextWhyeditTextWhy là những ứng viên xuất sắc nhất để nhóm vì các yếu tố này thuộc về ngữ nghĩa.

  1. Mở tệp add_gdg_fragment.xml.
  2. Đặt một LinearLayout xung quanh LabelTextWhyEditTextWhy để tạo một nhóm nội dung. Sao chép và dán mã bên dưới. LinearLayout này đã chứa một số kiểu mà bạn cần. (Đảm bảo button nằm ngoài LinearLayout.)
<LinearLayout android:id="@+id/contentGroup" android:layout_width="match_parent"
            android:layout_height="wrap_content" android:focusable="true"
            app:layout_constraintTop_toBottomOf="@id/EditTextRegion"
            android:orientation="vertical" app:layout_constraintStart_toStartOf="@+id/EditTextRegion"
            app:layout_constraintEnd_toEndOf="@+id/EditTextRegion"
            android:layout_marginTop="16dp" app:layout_constraintBottom_toTopOf="@+id/button"
            android:layout_marginBottom="8dp">

     <!-- label and edit text here –>

<LinearLayout/>
  1. Chọn Mã > Định dạng lại mã để thụt lề tất cả mã đúng cách.
  2. Xóa mọi lề của bố cục khỏi labelTextWhyeditTextWhy.
  3. Trong labelTextWhy, hãy thay đổi hạn chế của layout_constraintTop_toTopOf thành contentGroup.
app:layout_constraintTop_toTopOf="@+id/contentGroup" />
  1. Trong editTextWhy, hãy thay đổi giới hạn layout_constraintBottom_toBottomOf thành contentGroup.
app:layout_constraintBottom_toBottomOf="@+id/contentGroup"
  1. Liên kết EditTextRegionButton với contentGroup để loại bỏ lỗi.
app:layout_constraintBottom_toTopOf="@+id/contentGroup"
  1. Thêm lợi nhuận vào LinearLayout. Bạn có thể trích xuất lợi nhuận này dưới dạng thứ nguyên (không bắt buộc).
android:layout_marginStart="32dp"
android:layout_marginEnd="32dp"

Nếu bạn cần trợ giúp, hãy kiểm tra mã dựa trên add_gdg_fragment.xml trong mã giải pháp.

  1. Chạy ứng dụng của bạn và khám phá màn hình Đăng ký để chạy ARPDAU bằng TalkBack.

Bước 5: Thêm một khu vực trực tiếp

Hiện tại, nhãn trên nút gửi là OK. Sẽ tốt hơn nếu nút có một nhãn và phần mô tả trước khi gửi biểu mẫu và tự động thay đổi thành nhãn và nội dung mô tả nội dung khác sau khi người dùng nhấp vào và biểu mẫu đã được gửi. Bạn có thể làm việc này bằng cách sử dụng khu vực trực tiếp.

Khu vực trực tiếp cho biết dịch vụ hỗ trợ tiếp cận có nên thông báo cho người dùng khi chế độ xem thay đổi hay không. Ví dụ: thông báo cho người dùng về mật khẩu không chính xác hoặc lỗi mạng là một cách hay để làm cho ứng dụng dễ tiếp cận hơn. Trong ví dụ này, để đơn giản hóa quá trình, bạn sẽ thông báo cho người dùng khi nút gửi thay đổi trạng thái.

  1. Mở tệp add_gdg_fragment.xml.
  2. Thay đổi tính năng chỉ định văn bản của nút thành Gửi bằng tài nguyên chuỗi submit đã cung cấp.
android:text="@string/submit"
  1. Hãy thêm một khu vực trực tiếp vào nút bằng cách đặt thuộc tính android:accessibilityLiveRegion. Khi nhập, bạn có một số lựa chọn về giá trị. Tùy thuộc vào tầm quan trọng của thay đổi, bạn có thể chọn có làm gián đoạn người dùng hay không. Với giá trị "assertive", các dịch vụ trợ năng sẽ gián đoạn lời nói đang diễn ra để thông báo ngay lập tức các thay đổi đối với chế độ xem này. Nếu bạn đặt giá trị thành "none" thì sẽ không có thay đổi nào được thông báo. Các dịch vụ hỗ trợ tiếp cận thông báo sẽ thay đổi, nhưng sẽ chờ đến lượt họ. Đặt giá trị thành "Lịch".

android:accessibilityLiveRegion="polite"
  1. Trong gói add, hãy mở AddGdgFragment.kt.
  2. Bên trong showSnackBarEvent Observer, sau khi bạn hiển thị xong SnackBar, hãy đặt nội dung mô tả và văn bản mới cho nút.
binding.button.contentDescription=getString(R.string.submitted)
binding.button.text=getString(R.string.done)
  1. Chạy ứng dụng của bạn và nhấp vào nút. Rất tiếc, nút và phông chữ quá nhỏ!

Bước 6: Sửa kiểu nút

  1. Trong add_gdg_fragment.xml, hãy thay đổi nút\<99;s widthheight thành wrap_content để nhãn đầy đủ hiển thị và nút có kích thước phù hợp.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
  1. Xoá các thuộc tính backgroundTint, textColortextSize khỏi nút để ứng dụng dùng kiểu có giao diện tốt hơn.
  2. Xóa thuộc tính textColor khỏi textViewIntro. Màu giao diện phải tương phản tốt.
  3. Chạy ứng dụng. Nhấn vào nút Gửi dễ sử dụng hơn nhiều. Nhấp vào Gửi và lưu ý cách thay đổi thành Xong.

Khối là các phần tử thu gọn đại diện cho một thuộc tính, văn bản, thực thể hoặc hành động. Người dùng có thể nhập thông tin, chọn lựa chọn, lọc nội dung hoặc kích hoạt một hành động.

Tiện ích Chip là một trình bao bọc chế độ xem mỏng xung quanh ChipDrawable, trong đó có tất cả bố cục và logic vẽ. Logic bổ sung tồn tại để hỗ trợ tính năng chạm, chuột, bàn phím và điều hướng hỗ trợ tiếp cận. Khối chính và biểu tượng đóng được coi là các chế độ xem phụ hợp lý, đồng thời có trạng thái và hành vi điều hướng riêng.

Khối sử dụng các bản vẽ có thể vẽ. Ứng dụng vẽ được của Android cho phép bạn vẽ hình ảnh, hình dạng và ảnh động trên màn hình, và những quảng cáo này có thể có kích thước cố định hoặc được định kích thước động. Bạn có thể sử dụng hình ảnh dưới dạng hình ảnh có thể vẽ, chẳng hạn như hình ảnh trong ứng dụng cpm. Và bạn có thể sử dụng hình vẽ vectơ để vẽ bất cứ điều gì bạn có thể tưởng tượng. Ngoài ra, một lớp vẽ có thể đổi kích thước cũng có thể gọi là hình vẽ có thể vẽ 9 miếng và không được đề cập trong lớp học lập trình này. Biểu trưng pagetype, trong drawable/ic_gdg.xml, là một biểu tượng khác có thể vẽ.

Tài nguyên có thể vẽ không phải là chế độ xem, vì vậy, bạn không thể đặt tài nguyên có thể vẽ trực tiếp trong ConstraintLayout, bạn cần đặt tài sản này bên trong ImageView. Bạn cũng có thể sử dụng hình vẽ có thể cung cấp nền cho chế độ xem văn bản hoặc một nút, và nền sẽ nằm sau văn bản.

Bước 1: Thêm khối vào danh sách ARPDAU

Chip đã kiểm tra bên dưới sử dụng ba nội dung có thể vẽ. Nền và dấu kiểm đều là có thể vẽ. Việc chạm vào khối sẽ tạo ra hiệu ứng lan tỏa, được thực hiện bằng RippleDrawable đặc biệt cho thấy hiệu ứng gợn sóng để phản hồi các thay đổi về trạng thái.

Trong nhiệm vụ này, hãy thêm các khối vào danh sách ARPDAU và để chúng thay đổi trạng thái khi được chọn. Trong bài tập này, bạn thêm một hàng có tên là chip vào đầu màn hình Tìm kiếm. Mỗi nút sẽ lọc danh sách TeamYouTube để người dùng chỉ nhận được kết quả từ khu vực đã chọn. Khi bạn chọn một nút, nút đó sẽ thay đổi nền và hiển thị dấu kiểm.

  1. Mở Fragment_gdg_list.xml.
  2. Tạo com.google.android.material.chip.ChipGroup bên trong thuộc tính HorizontalScrollView.Đặt singleLine thành true để tất cả các khối được xếp trên một dòng có thể cuộn theo chiều ngang. Đặt thuộc tính singleSelection thành true để chỉ có thể chọn một khối trong nhóm tại một thời điểm. Sau đây là mã.
<com.google.android.material.chip.ChipGroup
    android:id="@+id/region_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:singleSelection="true"
    android:padding="@dimen/spacing_normal"/>
  1. Trong thư mục layout, hãy tạo một tệp tài nguyên bố cục mới có tên là region.xml để xác định bố cục cho một Chip.
  2. Trong tệp region.xml, hãy thay thế toàn bộ mã bằng bố cục của một Chip như đã cho bên dưới. Xin lưu ý rằng Chip này là một thành phần Material. Ngoài ra, hãy lưu ý rằng bạn nhận được dấu kiểm bằng cách đặt thuộc tính app:checkedIconVisible. Bạn sẽ gặp lỗi về màu selected_highlight bị thiếu.
<?xml version="1.0" encoding="utf-8"?>

<com.google.android.material.chip.Chip
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/Widget.MaterialComponents.Chip.Choice"
        app:chipBackgroundColor="@color/selected_highlight"
        app:checkedIconVisible="true"
        tools:checked="true"/>
  1. Để tạo màu selected_highlight bị thiếu, hãy đặt con trỏ vào selected_highlight, hiển thị trình đơn ý định và tạo tài nguyên màu cho phần đánh dấu đã chọn. Các tuỳ chọn mặc định đều tốt, vì vậy, bạn chỉ cần nhấp vào OK. Tệp được tạo trong thư mục res/color.
  2. Mở tệp res/color/selected_highlight.xml. Trong danh sách trạng thái màu này, được mã hóa dưới dạng <selector>, bạn có thể cung cấp nhiều màu cho các trạng thái khác nhau. Mỗi trạng thái và màu sắc liên kết sẽ được mã hóa dưới dạng <item>. Xem phần Cung cấp màu theo giao diện để biết thêm về các màu này.
  1. Bên trong <selector>, hãy thêm một mục có màu mặc định colorOnSurface vào danh sách trạng thái. Trong danh sách tiểu bang, điều quan trọng là phải luôn bao gồm tất cả tiểu bang. Một cách để thực hiện việc này là dùng màu mặc định.
<item android:alpha="0.18" android:color="?attr/colorOnSurface"/>
  1. Phía trên màu mặc định, hãy thêm một item có màu là colorPrimaryVariant và hạn chế sử dụng màu này khi trạng thái được chọn là true. Danh sách tiểu bang được xử lý từ trên xuống dưới, như một tuyên bố trường hợp. Nếu không có tiểu bang nào khớp, trạng thái mặc định sẽ áp dụng.
<item android:color="?attr/colorPrimaryVariant"
         android:state_selected="true" />

Bước 2: Hiển thị hàng khối

Ứng dụng pagetype tạo danh sách các khối cho thấy các khu vực có vCPM. Sau khi bạn chọn một khối, ứng dụng sẽ lọc kết quả để chỉ hiển thị kết quả liên quan đến ARPDAU cho khu vực đó.

  1. Trong gói search, hãy mở GdgListFragment.kt.
  2. Trong onCreateView(), ngay phía trên câu lệnh return, hãy thêm một đối tượng tiếp nhận dữ liệu vào viewModel.regionList và ghi đè onChanged(). Khi danh sách các khu vực do mô hình chế độ xem cung cấp thay đổi, các khối sẽ cần được tạo lại. Thêm một câu lệnh để trả về ngay lập tức nếu data được cung cấp là null.
viewModel.regionList.observe(viewLifecycleOwner, object: Observer<List<String>> {
        override fun onChanged(data: List<String>?) {
             data ?: return
        }
})
  1. Bên trong onChanged(), bên dưới thử nghiệm rỗng, hãy chỉ định binding.regionList cho một biến mới có tên là chipGroup để lưu vào bộ nhớ đệm regionList.
val chipGroup = binding.regionList
  1. Dưới đây, hãy tạo một layoutInflator mới để tăng cường khối từ chipGroup.context.
val inflator = LayoutInflater.from(chipGroup.context)
  1. Dọn dẹp và xây dựng lại dự án của bạn để loại bỏ lỗi liên kết dữ liệu.

Giờ đây, bạn có thể tạo các khối thực tế, mỗi khối trong từng khu vực trong regionList.

  1. Tạo một biến children để giữ tất cả các khối. Chỉ định cho hàm này một hàm liên kết trên data được chuyển để tạo và trả về mỗi khối.
val children = data.map {} 
  1. Bên trong bản đồ lambda, đối với mỗi regionName, hãy tạo và tăng cường một khối. Dưới đây là mã hoàn tất.
val children = data.map {
   val children = data.map { regionName ->
       val chip = inflator.inflate(R.layout.region, chipGroup, false) as Chip
       chip.text = regionName
       chip.tag = regionName
       // TODO: Click listener goes here.
       chip
   }
}
  1. Bên trong hàm lambda, ngay trước khi trả về chip, hãy thêm một trình xử lý lượt nhấp. Khi người dùng nhấp vào chip, hãy đặt trạng thái của thiết bị thành checked. Gọi onFilterChanged() trong viewModel để kích hoạt một chuỗi các sự kiện tìm nạp kết quả cho bộ lọc này.
chip.setOnCheckedChangeListener { button, isChecked ->
   viewModel.onFilterChanged(button.tag as String, isChecked)
}
  1. Ở cuối hàm lamba, hãy xóa tất cả chế độ xem hiện tại khỏi chipGroup, sau đó thêm tất cả các khối từ children vào chipGroup. (Bạn không thể cập nhật các khối, vì vậy, bạn phải xóa và tạo lại nội dung của chipGroup.)
chipGroup.removeAllViews()

for (chip in children) {
   chipGroup.addView(chip)
}

Đối tượng tiếp nhận dữ liệu đã hoàn thành của bạn phải như sau:

   override fun onChanged(data: List<String>?) {
       data ?: return

       val chipGroup = binding.regionList
       val inflator = LayoutInflater.from(chipGroup.context)

       val children = data.map { regionName ->
           val chip = inflator.inflate(R.layout.region, chipGroup, false) as Chip
           chip.text = regionName
           chip.tag = regionName
           chip.setOnCheckedChangeListener { button, isChecked ->
               viewModel.onFilterChanged(button.tag as String, isChecked)
           }
           chip
       }
       chipGroup.removeAllViews()

       for (chip in children) {
           chipGroup.addView(chip)
       }
   }
})
  1. Chạy ứng dụng của bạn và tìm kiếm vCPMS để mở màn hình Tìm kiếm nhằm sử dụng các khối mới. Khi bạn nhấp vào mỗi khối, ứng dụng sẽ hiển thị các nhóm bộ lọc bên dưới khối đó.

Chế độ ban đêm cho phép ứng dụng của bạn thay đổi màu sắc thành giao diện tối, chẳng hạn như khi chế độ cài đặt trên thiết bị được đặt để bật chế độ ban đêm. Ở chế độ ban đêm, các ứng dụng thay đổi nền sáng mặc định thành tối và thay đổi tất cả các thành phần màn hình khác cho phù hợp.

Bước 1: Bật chế độ ban đêm

Để cung cấp giao diện tối cho ứng dụng, bạn có thể thay đổi giao diện của ứng dụng này từ giao diện Light sang giao diện có tên là DayNight. Giao diện DayNight hiện sáng hoặc tối, tuỳ vào chế độ.

  1. Trong styles.xml,, hãy thay đổi giao diện mẹ của AppTheme từ Light thành DayNight.
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
  1. Trong phương thức onCreate() của MainActivity, hãy gọi AppCompatDelegate.setDefaultNightMode() để bật giao diện tối theo phương thức lập trình.
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
  1. Chạy ứng dụng và xác minh rằng ứng dụng đã chuyển sang giao diện tối.

Bước 2: Tạo bảng màu giao diện tối của riêng bạn

Để tùy chỉnh giao diện tối, hãy tạo các thư mục có bộ hạn định -night cho giao diện tối để sử dụng. Ví dụ: bạn có thể dùng các màu cụ thể ở chế độ ban đêm bằng cách tạo một thư mục có tên values-night.

  1. Truy cập công cụ bộ chọn màu Material.io và tạo bảng màu giao diện đêm. Ví dụ: bạn có thể đặt màu tối dựa trên màu xanh dương đậm.
  2. Tạo và tải tệp colors.xml xuống.
  3. Chuyển sang chế độ xem Dự án để liệt kê tất cả các thư mục trong dự án của bạn.
  4. Tìm thư mục res rồi mở rộng thư mục đó.
  5. Tạo thư mục tài nguyên res/values-night.
  6. Thêm tệp colors.xml mới vào thư mục tài nguyên res/values-night.
  7. Chạy ứng dụng của bạn, vẫn bật chế độ ban đêm và ứng dụng phải sử dụng các màu mới mà bạn đã xác định cho res/values-night. Lưu ý rằng các khối sử dụng màu phụ mới.

Dự án Android Studio: HuỷFinderfinal.

Hỗ trợ các ngôn ngữ từ phải sang trái

  • Trong tệp kê khai Android, hãy đặt android:supportsRtl="true".
  • Bạn có thể xem trước RTL trong trình mô phỏng và có thể sử dụng ngôn ngữ của riêng mình để kiểm tra bố cục màn hình. Trên thiết bị hoặc trình mô phỏng, hãy mở phần Cài đặt, rồi chọn Buộc có bố cục RTL trong phần Tùy chọn cho nhà phát triển.
  • Thay thế thông tin tham chiếu đến LeftRight bằng các thông tin tham chiếu đến StartEnd.
  • Tắt tính năng phản chiếu cho các tài nguyên có thể vẽ bằng cách xóa android:autoMirrored="true".
  • Chọn Tái cấu trúc > Thêm hỗ trợ RTL nếu có thể để Android Studio thực hiện giúp bạn.
  • Dùng các thư mục values-"language code" để lưu trữ các tài nguyên dành riêng cho ngôn ngữ.

Quét tìm khả năng tiếp cận

Thiết kế TalkBack cho nội dung mô tả nội dung

  • Cài đặt Bộ hỗ trợ tiếp cận của Android do Google cung cấp, trong đó có TalkBack.
  • Thêm nội dung mô tả nội dung vào tất cả thành phần trên giao diện người dùng. Ví dụ:
    android:contentDescription="@string/stage_image_description"
  • Đối với phần tử có thể chỉnh sửa như EditText, hãy sử dụng thuộc tính android:hint trong XML để cung cấp cho người dùng gợi ý về nội dung cần nhập.
  • Tạo nhóm nội dung bằng cách bao gồm các phần tử có liên quan vào một nhóm chế độ xem.
  • Tạo khu vực trực tiếp để cung cấp cho người dùng thêm phản hồi về android:accessibilityLiveRegion.

Sử dụng khối để triển khai bộ lọc

  • Chip là các phần tử thu gọn đại diện cho một thuộc tính, văn bản, thực thể hoặc hành động.
  • Để tạo một nhóm khối, hãy sử dụng com.google.android.material.chip.ChipGroup.
  • Xác định bố cục cho một com.google.android.material.chip.Chip.
  • Nếu bạn muốn khối của mình thay đổi màu sắc, hãy cung cấp danh sách trạng thái màu dưới dạng <selector> có màu trạng thái:
    <item android:color="?attr/colorPrimaryVariant"
    android:state_selected="true" />
  • Liên kết các khối với dữ liệu trực tiếp bằng cách thêm đối tượng tiếp nhận dữ liệu vào dữ liệu trong mô hình chế độ xem.
  • Để hiển thị các khối, hãy tạo một bơm hơi cho nhóm khối:
    LayoutInflater.from(chipGroup.context)
  • Tạo các khối, thêm một trình xử lý lượt nhấp để kích hoạt hành động mong muốn và thêm các khối đó vào nhóm khối.

Hỗ trợ chế độ tối

  • Hãy dùng AppTheme DayNight để hỗ trợ chế độ tối.
  • Bạn có thể đặt chế độ tối theo phương thức lập trình:
    AppCompatDelegate.setDefaultNightMode()
  • Tạo thư mục tài nguyên res/values-night để cung cấp màu và giá trị tùy chỉnh cho chế độ tối.

Tài liệu dành cho nhà phát triển Android:

Tài nguyên khác:

Phần này liệt kê các bài tập về nhà có thể được giao cho học viên đang làm việc qua lớp học lập trình này trong khóa học do người hướng dẫn tổ chức. Người hướng dẫn có thể làm những việc sau:

  • Giao bài tập về nhà nếu được yêu cầu.
  • Trao đổi với học viên cách nộp bài tập về nhà.
  • Chấm điểm bài tập về nhà.

Người hướng dẫn có thể sử dụng những đề xuất này ít hay nhiều tùy ý. Do đó, họ có thể thoải mái giao bất kỳ bài tập về nhà nào khác mà họ cảm thấy phù hợp.

Nếu bạn đang tự mình làm việc qua lớp học lập trình này, hãy thoải mái sử dụng các bài tập về nhà này để kiểm tra kiến thức của bạn.

Câu hỏi 1

Mục nào sau đây là bắt buộc để hỗ trợ các ngôn ngữ từ phải sang trái?

▢ Thay thế LeftRight trong các thuộc tính bằng StartEnd

▢ Chuyển sang ngôn ngữ RTL

▢ Đảm bảo tất cả các biểu tượng đều sử dụng android:autoMirrored="true"

▢ Cung cấp thông tin mô tả nội dung

Câu hỏi 2

Công cụ hỗ trợ tiếp cận nào sau đây được tích hợp trong hầu hết thiết bị Android?

▢ TalkBack

▢ Trình quét hỗ trợ tiếp cận

▢Trong Android Studio, Tái cấu trúc và gt; Thêm hỗ trợ RTL nếu có thể

▢ Lint

Câu hỏi 3

Trường hợp nào sau đây không đúng về khối?

▢ Bạn hiển thị các khối trong ChipGroup.

▢ Bạn có thể cung cấp danh sách trạng thái màu cho ChipGroup.

▢ Chip là các phần tử thu gọn đại diện cho giá trị nhập vào, thuộc tính hoặc hành động.

▢ Bạn phải luôn bật DarkTheme nếu ứng dụng của bạn dùng khối.

Câu hỏi 4

Giao diện nào tạo kiểu cho bạn ở chế độ tối và chế độ sáng?

DayNight

DarkTheme

DarkAndLightTheme

Light

Câu hỏi 5

Khu vực trực tiếp (live region) là gì?

▢ Nút chứa thông tin quan trọng cho người dùng

▢ Một khu vực trên màn hình thay đổi hình dạng theo nguyên tắc Material

▢ Chế độ xem cho phép phát video trực tuyến

▢ Một hình vẽ động có thể vẽ