You are on page 1of 2

tính previewImagexác định một ảnh xem trước (preview) của Widget trong

ứng dụng sau khi nó được cấu hình, đó là thứ người dùng nhìn thấy khi chọn Widget
ứng dụng. Nếu không có ảnh xem trước, thay vào đó người dùng sẽ nhìn thấy biểu
tượng ứng dụng. Trường này tương ứng với thuộc tính android:previewImage
trong phần tử <receiver> tại file AndroidManifest.xml. Tham khảo phần
thảo luận về việc sử dụng previewImage ở mục “Thiết lập ảnh xem trước”. Thuộc
tính này được giới thiệu trong Android 3.0.
• Thuộc tính autoAdvanceViewId xác định view ID cho view con của Widget
trong ứng dụng. View này nên được host của Widget tự động cập nhật. Thuộc tính
này được giới thiệu trong Android 3.0.
• Thuộc tính resizeMode xác định các quy tắc mà tại đó, một Widget có thể được
thay đổi kích thước. Bạn dùng thuộc tính này để tạo các Widget có khả năng thay
đổi kích thước cho màn hình Home - theo chiều ngang, chiều dọc hoặc cả hai.
Người dùng chạm và giữ vào một Widget để hiển thị bộ thay đổi kích thước (resize
handle), sau đó kéo nó theo chiều ngang hoặc/và dọc để thay đổi kích thước trên
khung lưới. Các giá trị cho thuộc tính resizeMode bao gồm “horizontal” (ngang),
“vertical” (dọc) và “none” (không chọn giá trị nào). Để khai báo một Widget có
khả năng thay đổi kích thước theo chiều ngang và dọc, hãy thiết lập giá trị là
“horizontal|vertical”. Thuộc tính này được giới thiệu trong Android 3.1.
• Thuộc tính minResizeHeight xác định chiều cao tối thiểu (theo dp) mà Widget
có thể được thay đổi kích thước. Trường này không có tác dụng nếu lớn hơn
minHeight, hoặc nếu việc thay đổi kích thước theo chiều dọc bị vô hiệu hóa (xem
resizeMode). Thuộc tính này được giới thiệu trong Android 4.0.
• Thuộc tính minResizeWidth xác định chiều rộng tối thiểu (theo dp) mà Ưidget
có thể được thay đổi kích thước. Trường này không có tác dụng nếu lớn hơn
minWidth, hoặc nếu việc thay đổi kích thước theo chiều ngang bị vô hiệu hóa
(xem resizeMode). Thuộc tính này được giới thiệu trong Android 4.0.
Lập trình Android cơ bản
127
• Thuộc tính widgetCategory khai báo xem Widget trong ứng dụng của bạn có
thể được hiển thị trên màn hình Home, màn hình khóa (lock screen) - còn gọi là
bảo vệ bàn phím, hoặc cả hai hay không. Các giá trị cho thuộc tính này bao gồm
“home_screen” và “keyguard”. Một Widget được hiển thị trên cả hai màn hình trên
cần đảm bảo theo hướng dẫn thiết kế cho cả hai lớp Widget. Để tham khảo thêm
thông tin, xem mục “Bật Widget của ứng dụng trên màn hình khóa”. Giá trị mặc định
là “home_screen”. Thuộc tính này được giới thiệu trong Android 4.2.
• Thuộc tính initialKeyguardLayout chỉ tới tài nguyên layout định nghĩa
màn hình khóa cho layout Widget của ứng dụng. Nó hoạt động tương tự
android:initialLayout, đồng thời cung cấp một layout có thể xuất hiện ngay
lập tức cho tới khi Widget được khởi tạo và có thể cập nhật layout. Thuộc tính này
được giới thiệu trong Android 4.2.
Xem lớp AppWidgetProviderInfo để biết thêm thông tin về các thuộc tính được
phần tử <appwidget-provider> chấp nhận.
Tạo layout cho Widget của ứng dụng

Bạn phải định nghĩa một layout ban đầu cho Widget trong ứng dụng của mình trong
file
XML và lưu file vào thư mục res/layout/ của dự án. Bạn có thể thiết kế Widget cho
ứng
dụng bằng cách sử dụng các đối tượng View được liệt kê bên dưới, nhưng trước khi
bắt đầu, hãy tìm hiểu mục “Hướng dẫn thiết kế Widget cho ứng dụng”.
Nếu bạn đã quen với Layout, việc tạo layout cho Widget của ứng dụng rất đơn giản.
Tuy
nhiên, bạn phải nhận thức được rằng các layout Widget của ứng dụng được dựa trên
RemoteViews vốn không hỗ trợ bất cứ loại layout hay Widget của view nào.
Một đối tượng RemoteViews (một Widget của ứng dụng) có thể hỗ trợ những lớp
layout sau:
• FrameLayout.
• LinearLayout.
• RelativeLayout.
• GridLayout.
và các lớp Widget dưới đây:
• AnalogClock.
• Button.
• Chronometer.
• ImageButton.
• ImageView.
• ProgressBar.
• TextView.
• ViewFlipper.
• ListView.
Lập trình Android cơ bản
128
• GridView.
• StackView.
• AdapterViewFlipper.
Con cháu của những lớp này không được hỗ trợ.
RemoteViews cũng hỗ trợ ViewStub, đó là một View vô hình, kích thước bằng không
mà bạn có thể dùng để điền dần các tài nguyên layout vào thời điểm chạy.
Thêm lề cho Widget của ứng dụng
Nhìn chung, các Widget thường không nên mở rộng tới cạnh bên màn hình và không
nên tràn sang (flush) những Widget khác; vì vậy, bạn nên thêm lề (margin) trên các
cạnh xung quanh khung (frame) Widget.
Như ở Android 4.0, các Widget của ứng dụng được tự động thêm vùng đệm (padding)
giữa khung Widget và khung viền (bounding box) của Widget để đưa ra phương án
căn chỉnh tốt hơn so với những Widget khác cùng các biểu tượng trên màn hình
Home của người dùng. Để tận dụng hành vi rất được khuyến khích này, hãy thiết lậ

You might also like