开发人员......我想创建一个可以改变android中导航栏颜色的应用程序。通常我们可以使用这个简单的代码来做到这一点。
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().setNavigationBarColor(getResources().getColor(R.color.your_awesome_color)); }
但问题是,我希望在应用程序未运行(在后台)时使此代码工作,就像这个图像一样。
This is android's home screen 我认为这可以在android服务的帮助下完成。但是我们不能在服务中使用getWindow()方法。
如果我使用WindowManager,那么请帮助我如何做到这一点?或其他任何帮助我并为我提供代码。
答案 0 :(得分:-1)
一个好的方法是坚持您在服务中选择的颜色。您可以使用sharedPreferences:
int yourColor = R.color.someColor;
SharedPreferences sharedPref = context.getSharedPreferences(
"com.example.your_filename", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("COLOR_KEY", yourColor);
editor.apply();
在您的活动中,您可以加载SharedPreference中的持久颜色,如下所示:
SharedPreferences sharedPref =getSharedPreferences(
"com.example.your_filename", Context.MODE_PRIVATE);
int yourColor = sharedPref.getInt("COLOR_KEY", R.color.defaultColor);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setNavigationBarColor(
ContextCompat.getColor(getContext(), yourColor)
);
}