0

[Android TV] Phần 4: Tạo TV Navigation

Hôm nay, chúng ta tiếp tục tìm hiểu phần 4 trong series bài dịch về Android TV. Phần này chúng ta sẽ đề cập đến vấn đề TV Navigation.

Thiết bị truyền hình cung cấp một tập hợp giới hạn các navigation controls cho ứng dụng. Khi thiết kế một kế hoạch, phương án sử dụng các navigation một cách hiệu quả cho các ứng dụng TV của chúng ta thì phụ thuộc vào sự hiểu biết các giới hạn điều khiển và mức độ nhận biết của người sử dụng khi vận hành ứng dụng của chúng ta. Khi chúng ta xây dựng ứng dụng cho Android TV, chúng ta nên đặc biệt chú ý đến cách người dùng thực sự sử dụng các navigations xung quanh ứng dụng của chúng ta khi sử dụng các nút trên điều khiển chứ không phải là trên màn hình cảm ứng.

Kích hoạt tính năng D-pad Navigation

Trên một thiết bị TV, người dùng điều hướng hoạt động của ứng dụng trên một thiết bị điều khiển từ xa, vì thế mọi hoạt động đều gần như phụ thuộc và các phím định hướng D-pad hoặc phím mũi tên. Đây là kiểu điều khiển khá giới hạn chỉ với các hình thức lên, xuống, sang trái, sang phải. Vì thế, để xây dựng và tối ưu hoá một ứng dụng dành cho TV device, chúng ta phải cung cấp một chương trình định hướng làm sao để người dùng có thể nhanh chóng, dễ dàng tìm hiểu được cách làm thế nào để điều hướng ứng dụng của chúng ta chỉ với các phím điều khiển giới hạn.

Framework của Android cung cấp cho chúng ta các xử lý chuyển hướng giữa các yếu tố tự động, vì thế thường chúng ta không phải thực hiện thao tác xử lý trên ứng dụng của chúng ta. Tuy nhiên, chúng ta vẫn nên test thử điều hướng với một bộ điều khiển D-pad để có thể kiểm tra được tất cả các vấn đề của điều hướng. Bạn có thể làm theo hướng dẫn dưới đây để kiểm tra rằng navigation system của ứng dụng làm việc tốt với D-pad trên một thiết bị TV:

  • Đảm bảo rằng người sử dụng với một chiếc điều khiển D-pad có thể điều hướng đến tất cả các điều khiển có thể nhìn thấy trên màn hình.
  • Để di chuyển các danh sách với sự tập trung, đảm bảo các D-pad sử dụng phím lên, xuống và cuộn theo danh sách, rồi nhấn phím Enter chọn một mục trong danh sách đó. Chắc chắn rằng người dùng có thể chọn một phần tử trong danh sách và danh sách vẫn hoạt động khi một phần tử trong danh sách được chọn.
  • Đảm bảo việc chuyển đổi giữa các điều khiển là đơn giản và dễ hiểu nhất.

Sửa đổi các định hướng mặc định

Framework của Android tự động áp dụng các chuyển hướng dự kiến dựa trên vị trí tương đối của các thành phần có thể đặt trong bố cục màn hình ứng dụng của chúng ta. CHúng ta nên kiểm tra các định hướng tạo ra trong ứng dụng bằng cách sử dụng một bộ điều khiển D-pad để thử nghiệm. Sau khi thử nghiệm, kiểm thử, nếu chúng ta có thể chấp nhận hoặc không chấp nhận sự sắp xếp mặc định đó, nếu không chấp nhận, chúng ta hoàn toàn có thể thiết lập rõ ràng cho sự định hướng, điều khiển các đối tượng trên ứng dụng của chúng ta.

Note: Chúng ta chỉ nếnử dụng các thuộc tính thay đổi trật tự khi mà các điều khiển mặc định của hệ thống hoạt động không tốt.

Phần code mẫu phía dưới sẽ thể hiện cho chúng ta thấy làm thế nào để xác định điều khiển kế tiếp để hướng đến một đối tượng được bố trí tiếp theo trên TextView:

<TextView android:id="@+id/Category1"
          android:nextFocusDown="@+id/Category2"\>

Bảmg dưới đây sẽ liệt kê tất cả các thuộc tính điều hướng có sẵn cho người sử dụng:

Attribute Function
nextFocusDown Defines the next view to receive focus when the user navigates down
nextFocusLeft Defines the next view to receive focus when the user navigates left
nextFocusRight Defines the next view to receive focus when the user navigates right
nextFocusUp Defines the next view to receive focus when the user navigates up

Để sử dụng một trong những định hướng trên rõ ràng, chúng ta các thiết lập giá trị cho các Id của một widget trong khi bố trí. Chúng ta nên thiết lập trật tự của chugns như một vòng lặp, do đó việc kiểm soát cuối cùng chỉ đạp tập trung vào một đối tượng được khai báo đầu tiên.

Cung cấp một cách rõ ràng các Focus và Selection

Sự thành công của sự điều hướng trên ứng dụng của chúng ta trên các TV device phụ thuộc vào việc chúng ta bố trí làm sao cho người dùng sử dụng một cách dễ dàng trên màn hình hiển thị. Nếu chúng ta không cung cấp chỉ dẫn chi tiết về các mục được chú trọng, yêu thích thì người dùng sẽ cảm thấy thất vọng về hiệu năng sử dụng. Điều quan trọng nhất là phải luôn có một mục mà người dùng có thể hành động sử dụng ngay lập tức khi ứng dụng của chúng ta bắt đầu hoặc bất cứ lúc nào nó nhàn rỗi.

Bố trí ứng dụng của chúng ta nên lưu ý cách sử dụng màu sắc, kích thước, hình ảnh động, hoặc một sự kết hợp nào đó của các thuộc tính để hỗ trợ người dùng có thể dễ dàng xác định những hành động mà họ muốn sử dụng. Sử dụng một chương trình thống nhất để tập trung trên ứng dụng của chúng ta.

Android cung cấp cho chúng ta Drawable State List Resources để thực hiện sự nổi bật cho các vị trí điểu khiển hay đang được lựa chọn. Đoạn code dưới đây trình bày cách cho phép hành vi trực quan cho một nút nơi người dùng đang đặt con trỏ tại ví trí đó, sau đó là di chuyển và lựa chọn đối tượng:

<!-- res/drawable/button.xml -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

Sử dụng layout XML như mẫu dưới có thể áp dụng được danh sách các trạng thái trước đó vào một nút bấm.

<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />

Chắc chắn rằng chúng ta đã cung cấp đủ các padding trong các đối tượng đặt điều khiển có tiêu điểm hoặc điểu khiển được lựa chọn sao cho nổi bật với các đối tượng điều khiển xung quanh.

Đối với mong muốn sự lựa chọn thêm về thiết kế sao cho hiệu quả và mang tính tập trung cho một ứng dụng chạy trên TV device chúng ta có thể tham khảo thêm Pattern for TV .

Phần tiếp theo chúng ta sẽ tìm hiểu thêm và phần Xây dựng TV Playback Apps.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí