protected override void OnElementChanged(VisualElementChangedEventArgs e) { base.OnElementChanged(e); if (e.OldElement == null) { if (View.Layer.Sublayers != null) { if (View.Layer.Sublayers.Length > 1) { View.Layer.Sublayers[0].RemoveFromSuperLayer(); } } MyContentPageRenderer page = (MyContentPageRenderer)Element; if (page.IsGradient) { var gradientLayer = new CAGradientLayer(); gradientLayer.Frame = View.Bounds; gradientLayer.Colors = new CGColor[] { page.StartColor.ToCGColor(), page.EndColor.ToCGColor() }; View.Layer.InsertSublayer(gradientLayer, 0); } } }
private void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == MyContentPageRenderer.OrientationProperty.PropertyName) { if (View.Layer.Sublayers.Length > 1) { View.Layer.Sublayers[0].RemoveFromSuperLayer(); } MyContentPageRenderer page = (MyContentPageRenderer)Element; if (page.IsGradient) { var gradientLayer = new CAGradientLayer(); gradientLayer.Frame = View.Bounds; gradientLayer.Colors = new CGColor[] { page.StartColor.ToCGColor(), page.EndColor.ToCGColor() }; View.Layer.InsertSublayer(gradientLayer, 0); } } }
protected override void DispatchDraw(Canvas canvas) { MyContentPageRenderer myContentPageRenderer = (MyContentPageRenderer)Element; if (myContentPageRenderer.IsGradient) { var gradient = new LinearGradient(0, 0, 0, Height, myContentPageRenderer.StartColor.ToAndroid(), myContentPageRenderer.EndColor.ToAndroid(), Shader.TileMode.Mirror); var paint = new Paint { Dither = true, }; paint.SetShader(gradient); canvas.DrawPaint(paint); } base.DispatchDraw(canvas); }