如何用服务更改android导航栏颜色

时间:2017-07-05 08:01:18

标签: android service colors navigation navigationbar

开发人员......我想创建一个可以改变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,那么请帮助我如何做到这一点?或其他任何帮助我并为我提供代码。

1 个答案:

答案 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)
    );
}