citra_android: Night mode fixes (#6416)

This commit is contained in:
Charles Lombardo 2023-04-09 15:18:28 -04:00 committed by GitHub
parent e283de9b6d
commit cdb157f58a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 6 deletions

View file

@ -169,6 +169,8 @@ public final class MainActivity extends AppCompatActivity implements MainView {
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
mPresenter.addDirIfNeeded(new AddDirectoryHelper(this)); mPresenter.addDirIfNeeded(new AddDirectoryHelper(this));
ThemeUtil.setSystemBarMode(this, ThemeUtil.getIsLightMode(getResources()));
} }
// TODO: Replace with a ButterKnife injection. // TODO: Replace with a ButterKnife injection.

View file

@ -3,6 +3,7 @@ package org.citra.citra_emu.utils;
import android.app.Activity; import android.app.Activity;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color; import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
@ -41,11 +42,7 @@ public class ThemeUtil {
break; break;
} }
int systemReportedThemeMode = activity.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; setSystemBarMode(activity, getIsLightMode(activity.getResources()));
WindowInsetsControllerCompat windowController = WindowCompat.getInsetsController(activity.getWindow(), activity.getWindow().getDecorView());
windowController.setAppearanceLightStatusBars(systemReportedThemeMode == Configuration.UI_MODE_NIGHT_NO);
windowController.setAppearanceLightNavigationBars(systemReportedThemeMode == Configuration.UI_MODE_NIGHT_NO);
setNavigationBarColor(activity, MaterialColors.getColor(activity.getWindow().getDecorView(), R.attr.colorSurface)); setNavigationBarColor(activity, MaterialColors.getColor(activity.getWindow().getDecorView(), R.attr.colorSurface));
} }
@ -53,6 +50,12 @@ public class ThemeUtil {
applyTheme(mPreferences.getInt(SettingsFile.KEY_DESIGN, 0), activity); applyTheme(mPreferences.getInt(SettingsFile.KEY_DESIGN, 0), activity);
} }
public static void setSystemBarMode(AppCompatActivity activity, boolean isLightMode) {
WindowInsetsControllerCompat windowController = WindowCompat.getInsetsController(activity.getWindow(), activity.getWindow().getDecorView());
windowController.setAppearanceLightStatusBars(isLightMode);
windowController.setAppearanceLightNavigationBars(isLightMode);
}
public static void setNavigationBarColor(@NonNull Activity activity, @ColorInt int color) { public static void setNavigationBarColor(@NonNull Activity activity, @ColorInt int color) {
int gestureType = InsetsHelper.getSystemGestureType(activity.getApplicationContext()); int gestureType = InsetsHelper.getSystemGestureType(activity.getApplicationContext());
int orientation = activity.getResources().getConfiguration().orientation; int orientation = activity.getResources().getConfiguration().orientation;
@ -80,4 +83,8 @@ public class ThemeUtil {
return Color.argb(Math.round(alphaFactor * Color.alpha(color)), Color.red(color), return Color.argb(Math.round(alphaFactor * Color.alpha(color)), Color.red(color),
Color.green(color), Color.blue(color)); Color.green(color), Color.blue(color));
} }
public static boolean getIsLightMode(Resources resources) {
return (resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_NO;
}
} }

View file

@ -2,7 +2,8 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:background="?attr/colorSurface">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/refresh_grid_games" android:id="@+id/refresh_grid_games"