void init(IAttributeSet attrs) { if (attrs != null) { var a = Context.ObtainStyledAttributes(attrs, Resource.Styleable.FlatUI); var themeName = a.GetString(Resource.Styleable.FlatUI_theme) ?? string.Empty; theme = FlatUI.GetTheme(themeName); style = a.GetInt(Resource.Styleable.FlatUI_fieldStyle, 0); radius = a.GetDimensionPixelSize(Resource.Styleable.FlatUI_cornerRadius, radius); padding = a.GetDimensionPixelSize(Resource.Styleable.FlatUI_textPadding, padding); Enum.TryParse <FlatUI.FlatTextAppearance> ( a.GetInt(Resource.Styleable.FlatUI_textAppearance, (int)textAppearance).ToString(), out textAppearance); Enum.TryParse <FlatUI.FlatFontFamily> ( a.GetInt(Resource.Styleable.FlatUI_fontFamily, (int)fontFamily).ToString(), out fontFamily); Enum.TryParse <FlatUI.FlatFontWeight> ( a.GetInt(Resource.Styleable.FlatUI_fontWeight, (int)fontWeight).ToString(), out fontWeight); a.Recycle(); } SetTheme(this, theme, fontFamily, fontWeight, textAppearance, style, radius, padding, border); }
void init(IAttributeSet attrs) { if (attrs != null) { var a = Context.ObtainStyledAttributes(attrs, Resource.Styleable.FlatUI); var themeName = a.GetString(Resource.Styleable.FlatUI_theme) ?? string.Empty; theme = FlatUI.GetTheme(themeName); textColor = a.GetInt(Resource.Styleable.FlatUI_textColor, textColor); backgroundColor = a.GetInt(Resource.Styleable.FlatUI_backgroundColor, backgroundColor); customBackgroundColor = a.GetInt(Resource.Styleable.FlatUI_customBackgroundColor, customBackgroundColor); cornerRadius = a.GetInt(Resource.Styleable.FlatUI_cornerRadius, cornerRadius); Enum.TryParse <FlatUI.FlatFontFamily> ( a.GetInt(Resource.Styleable.FlatUI_fontFamily, (int)fontFamily).ToString(), out fontFamily); Enum.TryParse <FlatUI.FlatFontWeight> ( a.GetInt(Resource.Styleable.FlatUI_fontWeight, (int)fontWeight).ToString(), out fontWeight); a.Recycle(); } SetTheme(this, theme, fontFamily, fontWeight, textColor, backgroundColor, customBackgroundColor, cornerRadius); }
public static void SetTheme(TextView textView, FlatTheme theme, FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, int textColor, int backgroundColor, int customBackgroundColor, int cornerRadius) { if (backgroundColor != -1) { var bgColor = theme.DarkAccentColor; if (backgroundColor == 0) bgColor = theme.DarkAccentColor; else if (backgroundColor == 1) bgColor = theme.BackgroundColor; else if (backgroundColor == 2) bgColor = theme.LightAccentColor; else if (backgroundColor == 3) bgColor = theme.VeryLightAccentColor; GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.SetColor(bgColor); gradientDrawable.SetCornerRadius(cornerRadius); textView.SetBackgroundDrawable(gradientDrawable); } else if (customBackgroundColor != -1) { var bgColor = theme.DarkAccentColor; if (customBackgroundColor == 0) bgColor = theme.DarkAccentColor; else if (customBackgroundColor == 1) bgColor = theme.BackgroundColor; else if (customBackgroundColor == 2) bgColor = theme.LightAccentColor; else if (customBackgroundColor == 3) bgColor = theme.VeryLightAccentColor; GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.SetColor(bgColor); gradientDrawable.SetCornerRadius(cornerRadius); textView.SetBackgroundDrawable(gradientDrawable); } var txtColor = theme.VeryLightAccentColor; if (textColor == 0) txtColor = theme.DarkAccentColor; if (textColor == 1) txtColor = theme.BackgroundColor; if (textColor == 2) txtColor = theme.LightAccentColor; if (textColor == 3) txtColor = theme.VeryLightAccentColor; textView.SetTextColor(txtColor); var typeface = FlatUI.GetFont(textView.Context, fontFamily, fontWeight); if (typeface != null) textView.SetTypeface(typeface, TypefaceStyle.Normal); }
public static void SetTheme(EditText editText, FlatTheme theme, FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, FlatUI.FlatTextAppearance textAppearance, int style, int radius, int padding, int border) { float[] outerR = new float[] { radius, radius, radius, radius, radius, radius, radius, radius }; // creating normal state drawable var normalFront = new ShapeDrawable(new RoundRectShape(outerR, null, null)); normalFront.SetPadding(padding, padding, padding, padding); var normalBack = new ShapeDrawable(new RoundRectShape(outerR, null, null)); normalBack.SetPadding(border, border, border, border); if (style == 0) // flat { normalFront.Paint.Color = Color.Transparent; normalBack.Paint.Color = theme.LightAccentColor; editText.SetTextColor(theme.VeryLightAccentColor); } else if (style == 1) // box { normalFront.Paint.Color = Color.White; normalBack.Paint.Color = theme.LightAccentColor; editText.SetTextColor(theme.BackgroundColor); } else if (style == 2) // transparent { normalFront.Paint.Color = Color.Transparent; normalBack.Paint.Color = Color.Transparent; editText.SetTextColor(theme.BackgroundColor); } Drawable[] d = { normalBack, normalFront }; LayerDrawable normal = new LayerDrawable(d); editText.SetBackgroundDrawable(normal); editText.SetHintTextColor(theme.VeryLightAccentColor); if (textAppearance == FlatUI.FlatTextAppearance.Dark) { editText.SetTextColor(theme.DarkAccentColor); } else if (textAppearance == FlatUI.FlatTextAppearance.Light) { editText.SetTextColor(theme.VeryLightAccentColor); } var typeface = FlatUI.GetFont(editText.Context, fontFamily, fontWeight); if (typeface != null) { editText.SetTypeface(typeface, TypefaceStyle.Normal); } }
void init(IAttributeSet attrs) { if (attrs != null) { var a = Context.ObtainStyledAttributes(attrs, Resource.Styleable.FlatUI); var themeName = a.GetString(Resource.Styleable.FlatUI_theme) ?? string.Empty; theme = FlatUI.GetTheme(themeName); a.Recycle(); } SetTheme(this, theme); }
public static void SetTheme(EditText editText, FlatTheme theme, FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, FlatUI.FlatTextAppearance textAppearance, int style, int radius, int padding, int border) { float[] outerR = new float[]{radius, radius, radius, radius, radius, radius, radius, radius}; // creating normal state drawable var normalFront = new ShapeDrawable(new RoundRectShape(outerR, null, null)); normalFront.SetPadding(padding, padding, padding, padding); var normalBack = new ShapeDrawable(new RoundRectShape(outerR, null, null)); normalBack.SetPadding(border, border, border, border); if (style == 0) { // flat normalFront.Paint.Color = Color.Transparent; normalBack.Paint.Color = theme.LightAccentColor; editText.SetTextColor(theme.VeryLightAccentColor); } else if (style == 1) { // box normalFront.Paint.Color = Color.White; normalBack.Paint.Color = theme.LightAccentColor; editText.SetTextColor(theme.BackgroundColor); } else if (style == 2) { // transparent normalFront.Paint.Color = Color.Transparent; normalBack.Paint.Color = Color.Transparent; editText.SetTextColor(theme.BackgroundColor); } Drawable[] d = {normalBack, normalFront}; LayerDrawable normal = new LayerDrawable(d); editText.SetBackgroundDrawable(normal); editText.SetHintTextColor(theme.VeryLightAccentColor); if (textAppearance == FlatUI.FlatTextAppearance.Dark) editText.SetTextColor(theme.DarkAccentColor); else if (textAppearance == FlatUI.FlatTextAppearance.Light) editText.SetTextColor(theme.VeryLightAccentColor); var typeface = FlatUI.GetFont(editText.Context, fontFamily, fontWeight); if (typeface != null) editText.SetTypeface(typeface, TypefaceStyle.Normal); }
public static void SetTheme(CheckBox checkBox, FlatTheme theme, FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, int radius, int size, int border) { // creating unchecked-enabled state drawable GradientDrawable uncheckedEnabled = new GradientDrawable(); uncheckedEnabled.SetCornerRadius(radius); uncheckedEnabled.SetSize(size, size); uncheckedEnabled.SetColor(Color.Transparent); uncheckedEnabled.SetStroke(border, theme.LightAccentColor); // creating checked-enabled state drawable GradientDrawable checkedOutside = new GradientDrawable(); checkedOutside.SetCornerRadius(radius); checkedOutside.SetSize(size, size); checkedOutside.SetColor(Color.Transparent); checkedOutside.SetStroke(border, theme.LightAccentColor); PaintDrawable checkedCore = new PaintDrawable(theme.LightAccentColor); checkedCore.SetCornerRadius(radius); checkedCore.SetIntrinsicHeight(size); checkedCore.SetIntrinsicWidth(size); InsetDrawable checkedInside = new InsetDrawable(checkedCore, border + 2, border + 2, border + 2, border + 2); Drawable[] checkedEnabledDrawable = {checkedOutside, checkedInside}; LayerDrawable checkedEnabled = new LayerDrawable(checkedEnabledDrawable); // creating unchecked-enabled state drawable GradientDrawable uncheckedDisabled = new GradientDrawable(); uncheckedDisabled.SetCornerRadius(radius); uncheckedDisabled.SetSize(size, size); uncheckedDisabled.SetColor(Color.Transparent); uncheckedDisabled.SetStroke(border, theme.VeryLightAccentColor); // creating checked-disabled state drawable GradientDrawable checkedOutsideDisabled = new GradientDrawable(); checkedOutsideDisabled.SetCornerRadius(radius); checkedOutsideDisabled.SetSize(size, size); checkedOutsideDisabled.SetColor(Color.Transparent); checkedOutsideDisabled.SetStroke(border, theme.VeryLightAccentColor); PaintDrawable checkedCoreDisabled = new PaintDrawable(theme.VeryLightAccentColor); checkedCoreDisabled.SetCornerRadius(radius); checkedCoreDisabled.SetIntrinsicHeight(size); checkedCoreDisabled.SetIntrinsicWidth(size); InsetDrawable checkedInsideDisabled = new InsetDrawable(checkedCoreDisabled, border + 2, border + 2, border + 2, border + 2); Drawable[] checkedDisabledDrawable = {checkedOutsideDisabled, checkedInsideDisabled}; LayerDrawable checkedDisabled = new LayerDrawable(checkedDisabledDrawable); StateListDrawable states = new StateListDrawable(); states.AddState(new int[]{-Android.Resource.Attribute.StateChecked, Android.Resource.Attribute.StateEnabled}, uncheckedEnabled); states.AddState(new int[]{Android.Resource.Attribute.StateChecked, Android.Resource.Attribute.StateEnabled}, checkedEnabled); states.AddState(new int[]{-Android.Resource.Attribute.StateChecked, -Android.Resource.Attribute.StateEnabled}, uncheckedDisabled); states.AddState(new int[]{Android.Resource.Attribute.StateChecked, -Android.Resource.Attribute.StateEnabled}, checkedDisabled); checkBox.SetButtonDrawable(states); // setting padding for avoiding text to be appear on icon checkBox.SetPadding(size / 4 * 5, 0, 0, 0); checkBox.SetTextColor(theme.LightAccentColor); var typeface = FlatUI.GetFont(checkBox.Context, fontFamily, fontWeight); if (typeface != null) checkBox.SetTypeface(typeface, TypefaceStyle.Normal); }
public static void SetTheme(TextView textView, FlatTheme theme, FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, int textColor, int backgroundColor, int customBackgroundColor, int cornerRadius) { if (backgroundColor != -1) { var bgColor = theme.DarkAccentColor; if (backgroundColor == 0) { bgColor = theme.DarkAccentColor; } else if (backgroundColor == 1) { bgColor = theme.BackgroundColor; } else if (backgroundColor == 2) { bgColor = theme.LightAccentColor; } else if (backgroundColor == 3) { bgColor = theme.VeryLightAccentColor; } GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.SetColor(bgColor); gradientDrawable.SetCornerRadius(cornerRadius); textView.SetBackgroundDrawable(gradientDrawable); } else if (customBackgroundColor != -1) { var bgColor = theme.DarkAccentColor; if (customBackgroundColor == 0) { bgColor = theme.DarkAccentColor; } else if (customBackgroundColor == 1) { bgColor = theme.BackgroundColor; } else if (customBackgroundColor == 2) { bgColor = theme.LightAccentColor; } else if (customBackgroundColor == 3) { bgColor = theme.VeryLightAccentColor; } GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.SetColor(bgColor); gradientDrawable.SetCornerRadius(cornerRadius); textView.SetBackgroundDrawable(gradientDrawable); } var txtColor = theme.VeryLightAccentColor; if (textColor == 0) { txtColor = theme.DarkAccentColor; } if (textColor == 1) { txtColor = theme.BackgroundColor; } if (textColor == 2) { txtColor = theme.LightAccentColor; } if (textColor == 3) { txtColor = theme.VeryLightAccentColor; } textView.SetTextColor(txtColor); var typeface = FlatUI.GetFont(textView.Context, fontFamily, fontWeight); if (typeface != null) { textView.SetTypeface(typeface, TypefaceStyle.Normal); } }
public static void SetTheme(CheckBox checkBox, FlatTheme theme, FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, int radius, int size, int border) { // creating unchecked-enabled state drawable GradientDrawable uncheckedEnabled = new GradientDrawable(); uncheckedEnabled.SetCornerRadius(radius); uncheckedEnabled.SetSize(size, size); uncheckedEnabled.SetColor(Color.Transparent); uncheckedEnabled.SetStroke(border, theme.LightAccentColor); // creating checked-enabled state drawable GradientDrawable checkedOutside = new GradientDrawable(); checkedOutside.SetCornerRadius(radius); checkedOutside.SetSize(size, size); checkedOutside.SetColor(Color.Transparent); checkedOutside.SetStroke(border, theme.LightAccentColor); PaintDrawable checkedCore = new PaintDrawable(theme.LightAccentColor); checkedCore.SetCornerRadius(radius); checkedCore.SetIntrinsicHeight(size); checkedCore.SetIntrinsicWidth(size); InsetDrawable checkedInside = new InsetDrawable(checkedCore, border + 2, border + 2, border + 2, border + 2); Drawable[] checkedEnabledDrawable = { checkedOutside, checkedInside }; LayerDrawable checkedEnabled = new LayerDrawable(checkedEnabledDrawable); // creating unchecked-enabled state drawable GradientDrawable uncheckedDisabled = new GradientDrawable(); uncheckedDisabled.SetCornerRadius(radius); uncheckedDisabled.SetSize(size, size); uncheckedDisabled.SetColor(Color.Transparent); uncheckedDisabled.SetStroke(border, theme.VeryLightAccentColor); // creating checked-disabled state drawable GradientDrawable checkedOutsideDisabled = new GradientDrawable(); checkedOutsideDisabled.SetCornerRadius(radius); checkedOutsideDisabled.SetSize(size, size); checkedOutsideDisabled.SetColor(Color.Transparent); checkedOutsideDisabled.SetStroke(border, theme.VeryLightAccentColor); PaintDrawable checkedCoreDisabled = new PaintDrawable(theme.VeryLightAccentColor); checkedCoreDisabled.SetCornerRadius(radius); checkedCoreDisabled.SetIntrinsicHeight(size); checkedCoreDisabled.SetIntrinsicWidth(size); InsetDrawable checkedInsideDisabled = new InsetDrawable(checkedCoreDisabled, border + 2, border + 2, border + 2, border + 2); Drawable[] checkedDisabledDrawable = { checkedOutsideDisabled, checkedInsideDisabled }; LayerDrawable checkedDisabled = new LayerDrawable(checkedDisabledDrawable); StateListDrawable states = new StateListDrawable(); states.AddState(new int[] { -Android.Resource.Attribute.StateChecked, Android.Resource.Attribute.StateEnabled }, uncheckedEnabled); states.AddState(new int[] { Android.Resource.Attribute.StateChecked, Android.Resource.Attribute.StateEnabled }, checkedEnabled); states.AddState(new int[] { -Android.Resource.Attribute.StateChecked, -Android.Resource.Attribute.StateEnabled }, uncheckedDisabled); states.AddState(new int[] { Android.Resource.Attribute.StateChecked, -Android.Resource.Attribute.StateEnabled }, checkedDisabled); checkBox.SetButtonDrawable(states); // setting padding for avoiding text to be appear on icon checkBox.SetPadding(size / 4 * 5, 0, 0, 0); checkBox.SetTextColor(theme.LightAccentColor); var typeface = FlatUI.GetFont(checkBox.Context, fontFamily, fontWeight); if (typeface != null) { checkBox.SetTypeface(typeface, TypefaceStyle.Normal); } }
public static void SetTheme(Button button, FlatTheme theme, FlatUI.FlatTextAppearance textAppearance, FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, bool isFullFlat, int padding, int radius) { var bottom = 5; float[] outerR = { radius, radius, radius, radius, radius, radius, radius, radius }; // creating normal state drawable var normalFront = new ShapeDrawable(new RoundRectShape(outerR, null, null)); normalFront.Paint.Color = theme.LightAccentColor; normalFront.SetPadding(padding, padding, padding, padding); var normalBack = new ShapeDrawable(new RoundRectShape(outerR, null, null)); normalBack.Paint.Color = theme.BackgroundColor; if (isFullFlat) { bottom = 0; } normalBack.SetPadding(0, 0, 0, bottom); Drawable[] d = { normalBack, normalFront }; var normal = new LayerDrawable(d); // creating pressed state drawable var pressedFront = new ShapeDrawable(new RoundRectShape(outerR, null, null)); pressedFront.Paint.Color = theme.BackgroundColor; var pressedBack = new ShapeDrawable(new RoundRectShape(outerR, null, null)); pressedBack.Paint.Color = theme.DarkAccentColor; if (!isFullFlat) { pressedBack.SetPadding(0, 0, 0, 3); } Drawable[] d2 = { pressedBack, pressedFront }; var pressed = new LayerDrawable(d2); // creating disabled state drawable var disabledFront = new ShapeDrawable(new RoundRectShape(outerR, null, null)); disabledFront.Paint.Color = theme.VeryLightAccentColor; var disabledBack = new ShapeDrawable(new RoundRectShape(outerR, null, null)); disabledBack.Paint.Color = theme.LightAccentColor; if (!isFullFlat) { disabledBack.SetPadding(0, 0, 0, padding); } Drawable[] d3 = { disabledBack, disabledFront }; var disabled = new LayerDrawable(d3); var states = new StateListDrawable(); states.AddState(new [] { Android.Resource.Attribute.StatePressed, Android.Resource.Attribute.StateEnabled }, pressed); states.AddState(new [] { Android.Resource.Attribute.StateFocused, Android.Resource.Attribute.StateEnabled }, pressed); states.AddState(new [] { Android.Resource.Attribute.StateEnabled }, normal); states.AddState(new [] { -Android.Resource.Attribute.StateEnabled }, disabled); button.SetBackgroundDrawable(states); if (textAppearance == FlatUI.FlatTextAppearance.Dark) { button.SetTextColor(theme.DarkAccentColor); } else if (textAppearance == FlatUI.FlatTextAppearance.Light) { button.SetTextColor(theme.VeryLightAccentColor); } else { button.SetTextColor(Android.Graphics.Color.White); } var typeface = FlatUI.GetFont(button.Context, fontFamily, fontWeight); if (typeface != null) { button.SetTypeface(typeface, Android.Graphics.TypefaceStyle.Normal); } }
public static void SetTheme(Button button, FlatTheme theme, FlatUI.FlatTextAppearance textAppearance, FlatUI.FlatFontFamily fontFamily, FlatUI.FlatFontWeight fontWeight, bool isFullFlat, int padding, int radius) { var bottom = 5; float[] outerR = {radius, radius, radius, radius, radius, radius, radius, radius}; // creating normal state drawable var normalFront = new ShapeDrawable(new RoundRectShape(outerR, null, null)); normalFront.Paint.Color = theme.LightAccentColor; normalFront.SetPadding(padding, padding, padding, padding); var normalBack = new ShapeDrawable(new RoundRectShape(outerR, null, null)); normalBack.Paint.Color = theme.BackgroundColor; if (isFullFlat) bottom = 0; normalBack.SetPadding(0, 0, 0, bottom); Drawable[] d = {normalBack, normalFront}; var normal = new LayerDrawable(d); // creating pressed state drawable var pressedFront = new ShapeDrawable(new RoundRectShape(outerR, null, null)); pressedFront.Paint.Color = theme.BackgroundColor; var pressedBack = new ShapeDrawable(new RoundRectShape(outerR, null, null)); pressedBack.Paint.Color = theme.DarkAccentColor; if (!isFullFlat) pressedBack.SetPadding(0, 0, 0, 3); Drawable[] d2 = {pressedBack, pressedFront}; var pressed = new LayerDrawable(d2); // creating disabled state drawable var disabledFront = new ShapeDrawable(new RoundRectShape(outerR, null, null)); disabledFront.Paint.Color = theme.VeryLightAccentColor; var disabledBack = new ShapeDrawable(new RoundRectShape(outerR, null, null)); disabledBack.Paint.Color = theme.LightAccentColor; if (!isFullFlat) disabledBack.SetPadding(0, 0, 0, padding); Drawable[] d3 = {disabledBack, disabledFront}; var disabled = new LayerDrawable(d3); var states = new StateListDrawable(); states.AddState(new []{ Android.Resource.Attribute.StatePressed, Android.Resource.Attribute.StateEnabled }, pressed); states.AddState(new []{ Android.Resource.Attribute.StateFocused, Android.Resource.Attribute.StateEnabled }, pressed); states.AddState(new []{ Android.Resource.Attribute.StateEnabled }, normal); states.AddState(new []{-Android.Resource.Attribute.StateEnabled}, disabled); button.SetBackgroundDrawable (states); if (textAppearance == FlatUI.FlatTextAppearance.Dark) button.SetTextColor(theme.DarkAccentColor); else if (textAppearance == FlatUI.FlatTextAppearance.Light) button.SetTextColor(theme.VeryLightAccentColor); else button.SetTextColor(Android.Graphics.Color.White); var typeface = FlatUI.GetFont(button.Context, fontFamily, fontWeight); if (typeface != null) button.SetTypeface(typeface, Android.Graphics.TypefaceStyle.Normal); }