アプリケーションのステータスバーの色を動的に設定する方法。ステータスバーの色をスワイプしながら(水平に)ビューページャーを使用し、タイトルバーとボタンの色を変更する必要があります。コードのタイトルとボタンの色が完全に変化するので、問題は配列リストから次の色を取得するステータスバーの色です。その問題を修正する方法は誰でも私を助けることができます。これが私のコードです
private int[] colors = new int[]{0xffffd200, 0xff37beb7, 0xff00ccff, 0xff8585c1, 0xfff2a03c, 0xff2a80b9, 0xfff15972,
0xffe9776c, 0xff9dcc96,0xff76c069};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
Window window = ((Activity) context).getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
int coloring = position % colors.length;
int new_color = colors[coloring];
window.setStatusBarColor(new_color);
title_bar.setBackgroundColor(new_color);
set_share.setBackgroundColor(new_color);
}
else{
int color = position % colors.length;
itemView.setBackgroundColor(colors[color]);
title_bar.setBackgroundColor(colors[color]);
set_share.setBackgroundColor(colors[color]);
}
ステータスバーの色を変更するには、setStatusBarColor(int color)を使用します。 javadocによると、ウィンドウにいくつかのフラグを設定する必要もあります。
コードのスニペット:
Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(activity.getResources().getColor(R.color.example_color));
これは次のリファレンスから取得されます: ステータスバーの色を変更してLollipopのアプリと一致させる方法?[Android]
ステータスバーの色になると、APIレベルが21を超えるデバイスにのみ追加できます。この条件を満たすデバイスに対して、以下に示すようにステータスバーの色を動的に変更できます。
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
window.setStatusBarColor(getResources().getColor(R.color.Statusbar));
}
ステータスバーの色を設定したいとき、私は https://github.com/jgilfelt/SystemBarTint を使用しました
私はそれをそのように使用しました:
public static void colorStatusBar(Window window, Activity activity) {
Log.v(Constants.LOG_TAG, "Start defining color bar status");
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KitKat) {
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
SystemBarTintManager tintManager = new SystemBarTintManager(activity);
tintManager.setStatusBarTintEnabled(true);
tintManager.setTintColor(activity.getResources().getColor(R.color.colorPrimaryDark));
}
}
ただし、ステータスバーの色を設定できるのは、アプリがAPI> = 19の電話で実行されている場合のみです。