Ejemplo n.º 1
0
        public static void ApplyTheme(this AppCompatActivity activity)
        {
            var settings = ResourceLocator.ObtainScope().Resolve <ISettings>();
            var theme    = settings.AppTheme;

            CurrentTheme = theme;
            // Base
            if ((theme & AppTheme.Dark) == AppTheme.Dark)
            {
                activity.SetTheme(Resource.Style.AoTracker_Dark);
                activity.Window.SetStatusBarColor(DarkBackgroundColour);
            }
            else if ((theme & AppTheme.Black) == AppTheme.Black)
            {
                activity.SetTheme(Resource.Style.AoTracker_Black);
                activity.Window.SetStatusBarColor(Color.Black);
            }
            else
            {
                activity.SetTheme(Resource.Style.AoTracker_Light);
            }

            // Colour scheme
            if ((theme & AppTheme.Orange) == AppTheme.Orange)
            {
                activity.Theme.ApplyStyle(Resource.Style.ColourSchemeOrange, true);
            }
            else if ((theme & AppTheme.Lime) == AppTheme.Lime)
            {
                activity.Theme.ApplyStyle(Resource.Style.ColourSchemeLime, true);
            }
            else if ((theme & AppTheme.Cyan) == AppTheme.Cyan)
            {
                activity.Theme.ApplyStyle(Resource.Style.ColourSchemeCyan, true);
            }
            else if ((theme & AppTheme.Purple) == AppTheme.Purple)
            {
                activity.Theme.ApplyStyle(Resource.Style.ColourSchemePurple, true);
            }
            else if ((theme & AppTheme.SkyBlue) == AppTheme.SkyBlue)
            {
                activity.Theme.ApplyStyle(Resource.Style.ColourSchemeSkyBlue, true);
            }
            else if ((theme & AppTheme.Red) == AppTheme.Red)
            {
                activity.Theme.ApplyStyle(Resource.Style.ColourSchemeRed, true);
            }
            else if ((theme & AppTheme.Pink) == AppTheme.Pink)
            {
                activity.Theme.ApplyStyle(Resource.Style.ColourSchemePink, true);
            }

            // Toolbar overrides
            if ((theme & AppTheme.Dark) == AppTheme.Dark)
            {
                activity.Theme.ApplyStyle(Resource.Style.ColourSchemeToolbarDark, true);
            }
            else if ((theme & AppTheme.Black) == AppTheme.Black)
            {
                activity.Theme.ApplyStyle(Resource.Style.ColourSchemeToolbarBlack, true);
            }

            if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
            {
                RedColour  = activity.Resources.GetColor(Resource.Color.RedColour, activity.Theme);
                LimeColour = activity.Resources.GetColor(Resource.Color.LimeColour, activity.Theme);
            }
            else
            {
#pragma warning disable 618
                RedColour  = activity.Resources.GetColor(Resource.Color.RedColour);
                LimeColour = activity.Resources.GetColor(Resource.Color.LimeColour);
#pragma warning restore 618
            }

            // Colour settings

            AccentColour       = ResolveColour(activity, Resource.Attribute.AccentColour);
            TextColour         = ResolveColour(activity, Resource.Attribute.TextColour);
            TextInvertedColour = ResolveColour(activity, Resource.Attribute.TextInvertedColour);
            ToolbarTextColour  = ResolveColour(activity, Resource.Attribute.ToolbarTextColour);
        }