2011-09-09 35 views
5

Tôi đang tạo ứng dụng để sử dụng bởi các phi công. Nó chủ yếu sử dụng TextView, EditText, Button, v.v. Nói cách khác, không phải đồ họa nặng.Tôi muốn tạo "chế độ ban đêm" màu đỏ cho ứng dụng Android của mình

Khi sử dụng vào ban đêm, tôi muốn người dùng có thể chuyển sang "chế độ ban đêm" nơi mọi thứ trên màn hình có màu đỏ và đen ... như ứng dụng Google Sky Map. (Điều này quan trọng đối với phi công vì màu đỏ không phá hủy sự thích ứng ban đêm tự nhiên của mắt như các màu khác.)

Cách tốt nhất để làm điều này là gì? Tôi đã tìm thấy các API như ColorFilter, v.v. nhưng tôi không chắc chắn cách tôi sẽ áp dụng các ứng dụng này.

+2

bạn có thể cung cấp bố cục hoặc tài nguyên khác cho chế độ ban đêm. http://developer.android.com/guide/topics/resources/providing-resources.html Ví dụ: - tạo thư mục bố cục-đêm – PH7

+0

Bạn đã cố che phủ SurfaceView và vẽ Canvas trong suốt ở chế độ bình thường. Sử dụng Paint withe một ColorFilter cho chế độ ban đêm của bạn. –

+0

Loại điều này rất hữu ích cho các nhà thiên văn học nghiệp dư, vì cùng một lý do (tầm nhìn ban đêm) – Roboprog

Trả lời

2

Nếu bạn chỉ đơn giản nói về việc thay đổi màu của các chế độ xem khác nhau trong bố cục chứ không phải cấu trúc của bố cục, thì tôi khuyên bạn chỉ nên thực hiện việc này bằng cách sử dụng kiểu.

tức là Xác định hai bộ kiểu cho các chế độ xem khác nhau tạo nên bố cục của bạn - một bộ cho chế độ ban đêm và một cho chế độ ban ngày. Trong hoạt động của bạn, sau đó nó trở thành một trường hợp gọi setStyle() trên mỗi quan điểm của bạn để chuyển đổi nó giữa đêm và ngày.

Đưa ra quy ước đặt tên hợp lý và sơ đồ bố mẹ cho phong cách của bạn sẽ làm cho cuộc sống của bạn dễ dàng hơn nhiều. ví dụ. MyText.LargeMyText.Large.Night.

Android developer doc on Themes and Style là điểm khởi đầu tốt.

1

Tạo chủ đề ngày và đêm và đặt nó theo chương trình sẽ hoạt động. Nhưng nó cũng đòi hỏi bạn phải sao chép phong cách của bạn, chỉ để xác định drawables/màu sắc khác nhau.

Thay vào đó, bạn có thể duy trì một kiểu và sử dụng chế độ hỗ trợ chế độ ngày/đêm được tích hợp sẵn của Android. Cũng giống như bạn có thể có nhiều biến thể của một bố cục đơn (cho hướng ngang hoặc dọc), có thể vẽ (với mật độ điểm ảnh khác nhau) và chuỗi (cho các miền khác nhau), bạn cũng có thể có phiên bản ngày và đêm của hình vẽ và màu sắc. Các specifiers là "-night" và "-notnight" nhưng bạn có thể sẽ muốn sử dụng "-night" hoặc không có gì, làm cho phiên bản ngày của bạn là mặc định. Ví dụ:

res/drawable/fancy-button-background.9.png 
res/drawable-night/fancy-button-background.9.png 

Android có thể tự động chuyển chế độ ngày/đêm nhưng chi tiết về cách thức và thời điểm xảy ra không rõ ràng với tôi. Để tự mình thay đổi chế độ, bạn có thể sử dụng UiModeManager#setNightMode(). Chỉ cần đảm bảo chế độ ô tô được bật trước tiên, sử dụng enableCarMode(0).

Các vấn đề liên quan