Cách bao gồm một chủ đề tối trong ứng dụng Android của bạn

Đối với các nhà phát triển, tạo một ứng dụng Android là một quá trình dễ dàng - thiết kế một giao diện người dùng hấp dẫn là điều thực sự khó khăn. Đó là lý do tại sao chúng tôi đã viết hướng dẫn về Cách thiết kế giao diện người dùng ứng dụng Android không phù hợp với các nhà phát triển, những người cần một chút cảm hứng trong việc tạo ra các giao diện người dùng đơn giản nhưng hấp dẫn. Trong hướng dẫn đó, chúng tôi đã đề cập ngắn gọn về việc thêm chủ đề chế độ tối / đêm vào ứng dụng của bạn và trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn thực hiện điều đó.

Thêm một chủ đề chế độ tối / đêm vào ứng dụng của bạn có thể là một lựa chọn tuyệt vời cho người dùng của bạn - nó giúp tiết kiệm pin và dễ dàng hơn nhiều vào mắt vào ban đêm. Nền trắng trên văn bản màu đen hoặc bất kỳ kết hợp màu 'sáng' nào trong giao diện người dùng của bạn, thực sự gây căng thẳng cho mắt, đặc biệt là vào ban đêm. Do đó, một nền tối với văn bản sáng hơn ít gây căng thẳng và có hại cho mắt hơn, đó là lý do tại sao nhiều ứng dụng phổ biến đã bắt đầu bao gồm một chủ đề tối - gần đây nhất là YouTube và Reddit, mặc dù Facebook vẫn chưa xuất bản chúng sau khi hứa hẹn Có thể.

Nếu bạn muốn dễ dàng thêm chế độ tối có thể bật vào ứng dụng Android của mình, hãy làm theo hướng dẫn và nhận xét về Ứng dụng này nếu bạn gặp phải bất kỳ vấn đề nào!

Tạo các thuộc tính XML

Trước tiên, bạn cần tạo một tệp thuộc tính XML sẽ xử lý theo chủ đề. Điều này tốt hơn nhiều so với việc bao gồm hai bộ tài nguyên trong APK của bạn cho hai chủ đề khác nhau và do đó làm tăng kích thước APK của bạn, vì Android có thể thay đổi màu sắc trên các thuộc tính thông qua XML này.

Vì vậy, trong thư mục 'tài nguyên' của ứng dụng của bạn, hãy tạo một tệp có tên attrs.xml và thêm các dòng này ( đây là các thuộc tính có thể tạo kiểu):

Trước Lollipop, chúng tôi không thể chỉ định các thuộc tính cho drawable, vì vậy chúng tôi phải chỉ định ID tài nguyên cho drawable - tuy nhiên, đây không còn là trường hợp nữa.

Thêm kiểu

Để thực hiện công việc này, chúng ta cần tạo hai kiểu riêng biệt sẽ chia sẻ cùng một cơ sở. Đầu tiên rõ ràng sẽ là chủ đề 'ánh sáng' chính của bạn và thứ hai sẽ là chủ đề 'tối' của bạn.

 # F4F4F6 # 96F4F4F6 #FFFF # F2F2F3 @ drawable / i_light_plholder # 33343B / item> # 8033343B # 28292e # F2F2F3 @ drawable / i_dark_pholder 

Dưới đây là các kiểu thực tế cho một hoạt động nhất định:

 # F4F4F6 # 33343B 

Bạn cần chỉ định một trong những chủ đề này vào Bản kê khai cho hoạt động của ứng dụng, trong trường hợp này là FeedActivity.

Cách điệu các khung nhìn

Đây là một ví dụ về cách điệu các khung nhìn của bạn - trong ví dụ này, nó không tìm thấy lỗi Chuyển hướng Trang.

Cách bật chuyển đổi chủ đề động

Cách tốt nhất và hiệu quả nhất để kích hoạt chuyển đổi chủ đề động là tải SharedPreference có giá trị được sử dụng để lưu trữ cài đặt vào phiên bản Ứng dụng bằng cách sử dụng mẫu Singleton, có nghĩa là chúng ta sẽ không phải làm điều đó khi bắt đầu mỗi Hoạt động.

 Ứng dụng lớp công khai mở rộng Ứng dụng {chuỗi kết thúc tĩnh tĩnh TAG = "Ứng dụng"; boolean riêng isNightModeEnables = false; @Override void công khai onCreate () {super.onCreate (); // Chúng tôi tải trạng thái Chế độ ban đêm tại đây SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (this); this .isNightModeEnables = mPrefs.getBoolean (N N_M_MEEEE, sai); } boolean isNightModeEnables () {return isNightModeEnables; } void void setIsNightModeEnables (boolean isNightModeEnables) {this.isNightModeEnabled = isNightModeEnabled; }} 

Bởi vì phiên bản này đang được khởi chạy trước bất kỳ thứ gì khác, nó cho phép bạn gọi isNightModeEnables () Boolean bất cứ khi nào bạn muốn, trong bất kỳ hoạt động nào thuộc về ứng dụng khi nó được mở.

 lớp cuối cùng công khai FeedActivity mở rộng AppCompatActivity {chuỗi tĩnh cuối cùng riêng tư TAG = Thời gian FeedActivity Hồi; @Override được bảo vệ void onCreate (Gói đã lưuInstanceState) {if (MyApplication.getInstance (). IsNightModeEnables ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (yetInstanceState); setContentView (R.layout.activity_feed); }} 

Tuy nhiên, nếu bạn muốn áp dụng một chủ đề khác với chủ đề được chỉ định trong tệp kê khai, thì phải thực hiện trước khi gọi phương thức cha mẹ onCreate ().

Đặt trạng thái bằng AppCompat

AppCompat thực sự hữu ích cho nhiều thứ và trong trường hợp này, chúng tôi sẽ sử dụng nó để đặt trạng thái chế độ. Điều này có nghĩa là bạn không còn cần phải sử dụng phiên bản ứng dụng để tạo trạng thái lưu trữ, do đó cắt giảm sự phình to của bộ đệm ứng dụng ( mặc dù có một lề rất nhỏ ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

Tại đây, bạn có thể sử dụng:

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

Lấy Nhà nước

 AppCompatDelegate.getDefaultNightMode (); lớp cuối cùng công khai FeedActivity mở rộng AppCompatActivity {chuỗi tĩnh cuối cùng riêng tư TAG = Thời gian FeedActivity Hồi; @Override được bảo vệ void onCreate (Gói đã lưuInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivity) } super.onCreate (yetInstanceState); setContentView (R.layout.activity_feed); }} 

Đó là điều nên làm - bạn có thể tiếp tục tùy chỉnh và điều chỉnh các giá trị theo ý thích của mình, nhưng hướng dẫn này là một giới thiệu tuyệt vời để bạn bắt đầu với việc bao gồm một chủ đề tối tự nhiên trong ứng dụng Android của bạn.

Bài ViếT Thú Vị