Exemplo n.º 1
0
        void SetDrawable2(Color StartColor, Color EndColor)
        {
            MyButtonRenderer myButtonRenderer = (MyButtonRenderer)Element;

            if (myButtonRenderer.IsGradient)
            {
                StartColor = System.Drawing.Color.FromArgb(70, StartColor);
                EndColor   = System.Drawing.Color.FromArgb(70, EndColor);


                var gradient = new CAGradientLayer();
                gradient.Colors = new CGColor[]
                {
                    StartColor.ToCGColor(),
                        EndColor.ToCGColor()
                };
                gradient.StartPoint = new CGPoint(0, 0.5);
                gradient.EndPoint   = new CGPoint(1, 0.5);
                Control.Layer.InsertSublayer(gradient, 0);

                var newBounds = Element.Bounds.ToRectangleF();
                foreach (var layer in Control?.Layer.Sublayers.Where(layer => layer is CAGradientLayer))
                {
                    layer.Frame = new CGRect(0, 0, newBounds.Width, newBounds.Height);
                }
            }
            else
            {
                Color staticColor = System.Drawing.Color.FromArgb(70, myButtonRenderer.StaticColor);
                Control.BackgroundColor = staticColor.ToUIColor();
            }
        }
Exemplo n.º 2
0
 void SetDrawable(MyButtonRenderer myButtonRenderer)
 {
     if (myButtonRenderer.IsGradient)
     {
         Color StartColor = ColorInterpolator.InterpolateBetween(myButtonRenderer.EndColor,
                                                                 myButtonRenderer.StartColor,
                                                                 myButtonRenderer.NumOfGradientStart);
         Color EndColor = ColorInterpolator.InterpolateBetween(myButtonRenderer.StartColor,
                                                               myButtonRenderer.EndColor,
                                                               myButtonRenderer.NumOfGradientEnd);
         var gradient = new CAGradientLayer();
         gradient.Colors = new CGColor[]
         {
             StartColor.ToCGColor(),
                 EndColor.ToCGColor()
         };
         gradient.StartPoint = new CGPoint(0, 0.5);
         gradient.EndPoint   = new CGPoint(1, 0.5);
         Control.Layer.InsertSublayer(gradient, 0);
     }
     else
     {
         Control.BackgroundColor = myButtonRenderer.StaticColor.ToUIColor();
     }
 }
Exemplo n.º 3
0
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
            if (e.PropertyName.Equals(MyButtonRenderer.StaticColorProperty.PropertyName))
            {
                MyButtonRenderer myButtonRenderer = (MyButtonRenderer)Element;
                GradientDrawable gradientDrawable = (GradientDrawable)Control.Background;
                gradientDrawable.SetColor(myButtonRenderer.StaticColor.ToAndroid());
            }
            if (e.PropertyName.Equals(MyButtonRenderer.IsEnabledProperty.PropertyName))
            {
                MyButtonRenderer myButtonRenderer = (MyButtonRenderer)Element;
                GradientDrawable gradientDrawable = (GradientDrawable)Control.Background;
                if (!myButtonRenderer.IsEnabled)
                {
                    if (myButtonRenderer.IsGradient)
                    {
                        Color StartColor = System.Drawing.Color.FromArgb(70, myButtonRenderer.StartColor);
                        Color EndColor   = System.Drawing.Color.FromArgb(70, myButtonRenderer.EndColor);

                        gradientDrawable.SetColors(new int[] {
                            StartColor.ToAndroid(),
                            EndColor.ToAndroid()
                        });
                    }
                    else
                    {
                        Color staticColor = System.Drawing.Color.FromArgb(70, myButtonRenderer.StaticColor);
                        gradientDrawable.SetColor(staticColor.ToAndroid());
                    }
                }
                else
                {
                    if (myButtonRenderer.IsGradient)
                    {
                        gradientDrawable.SetColors(new int[] {
                            myButtonRenderer.StartColor.ToAndroid(),
                            myButtonRenderer.EndColor.ToAndroid()
                        });
                    }
                    else
                    {
                        gradientDrawable.SetColor(myButtonRenderer.StaticColor.ToAndroid());
                    }
                }
            }
        }
Exemplo n.º 4
0
        protected override void OnElementChanged(ElementChangedEventArgs <Button> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement == null && e.NewElement != null)
            {
                MyButtonRenderer myButtonRenderer = (MyButtonRenderer)Element;
                if (!myButtonRenderer.IsEnabled)
                {
                    SetDrawable2(myButtonRenderer.StartColor, myButtonRenderer.EndColor);
                }
                else
                {
                    SetDrawable(myButtonRenderer);
                }
                TypeBorder = myButtonRenderer.TypeBorder;
            }
        }
Exemplo n.º 5
0
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
            if (e.PropertyName.Equals(MyButtonRenderer.StaticColorProperty.PropertyName))
            {
                MyButtonRenderer myButtonRenderer = (MyButtonRenderer)Element;
                Control.BackgroundColor = myButtonRenderer.StaticColor.ToUIColor();
            }
            if (e.PropertyName.Equals(MyButtonRenderer.IsEnabledProperty.PropertyName))
            {
                MyButtonRenderer myButtonRenderer = (MyButtonRenderer)Element;
                if (!myButtonRenderer.IsEnabled)
                {
                    //SetDrawable2(myButtonRenderer.StartColor, myButtonRenderer.EndColor);
                    //Control.TintColor = Color.White.ToUIColor();
                    SetDrawable(myButtonRenderer.StartColor, myButtonRenderer.EndColor);
                    var newBounds = Element.Bounds.ToRectangleF();
                    foreach (var layer in Control?.Layer.Sublayers.Where(layer => layer is CAGradientLayer))
                    {
                        layer.Frame = new CGRect(0, 0, newBounds.Width, newBounds.Height);
                    }
                }
                else
                {
                    SetDrawable(myButtonRenderer.StartColor, myButtonRenderer.EndColor);

                    /*if (myButtonRenderer.IsGradient)
                     * {
                     *
                     * }
                     * else
                     * {
                     *  SetDrawable(myButtonRenderer.StartColor, myButtonRenderer.EndColor);
                     *  var newBounds = Element.Bounds.ToRectangleF();
                     *  foreach (var layer in Control?.Layer.Sublayers.Where(layer => layer is CAGradientLayer))
                     *      layer.Frame = new CGRect(0, 0, newBounds.Width, newBounds.Height);
                     * }*/
                }
            }
        }
Exemplo n.º 6
0
        protected override void OnElementChanged(ElementChangedEventArgs <Button> e)
        {
            base.OnElementChanged(e);

            if ((Control != null) && (e.OldElement == null))
            {
                MyButtonRenderer myButtonRenderer = (MyButtonRenderer)Element;
                GradientDrawable gradientDrawable = new GradientDrawable();
                if (myButtonRenderer.IsGradient)
                {
                    Color StartColor = ColorInterpolator.InterpolateBetween(myButtonRenderer.EndColor,
                                                                            myButtonRenderer.StartColor,
                                                                            myButtonRenderer.NumOfGradientStart);
                    Color EndColor = ColorInterpolator.InterpolateBetween(myButtonRenderer.StartColor,
                                                                          myButtonRenderer.EndColor,
                                                                          myButtonRenderer.NumOfGradientEnd);
                    if (!myButtonRenderer.IsEnabled)
                    {
                        StartColor = System.Drawing.Color.FromArgb(70, StartColor);
                        EndColor   = System.Drawing.Color.FromArgb(70, EndColor);
                    }
                    gradientDrawable = new GradientDrawable(
                        GradientDrawable.Orientation.LeftRight,
                        new int[] { StartColor.ToAndroid(),
                                    EndColor.ToAndroid() }
                        );
                }
                else
                {
                    Color staticColor = myButtonRenderer.StaticColor;
                    if (!myButtonRenderer.IsEnabled)
                    {
                        staticColor = System.Drawing.Color.FromArgb(70, myButtonRenderer.StaticColor);
                    }
                    gradientDrawable.SetColor(staticColor.ToAndroid());
                }
                switch (myButtonRenderer.TypeBorder)
                {
                case TypeBorder.All:
                    gradientDrawable.SetCornerRadii(new float[] { 80, 80, 80, 80,
                                                                  80, 80, 80, 80 });
                    break;

                case TypeBorder.Left:
                    gradientDrawable.SetCornerRadii(new float[] { 80, 80, 0, 0,
                                                                  0, 0, 80, 80 });
                    break;

                case TypeBorder.Right:
                    gradientDrawable.SetCornerRadii(new float[] { 0, 0, 80, 80,
                                                                  80, 80, 0, 0 });
                    break;

                case TypeBorder.Down:
                    gradientDrawable.SetCornerRadii(new float[] { 0, 0, 0, 0,
                                                                  80, 80, 80, 80 });
                    break;

                case TypeBorder.Up:
                    gradientDrawable.SetCornerRadii(new float[] { 80, 80, 80, 80,
                                                                  0, 0, 0, 0 });
                    break;
                }
                Control.StateListAnimator = new StateListAnimator();
                Control.SetBackground(gradientDrawable);
            }
        }