protected override void SetValueImpl(object target, object value) { var button = target as ImageButton; bool showSubTasks = (bool)value; float degree = showSubTasks ? Degree180 : MinusDegree180; if (button.Rotation == degree) { return; } if (button.Rotation == 0 && !showSubTasks) { return; } if (!AndroidUtils.IsViewVisibleOnScreen(AndroidGlobals.ApplicationContext, button)) { button.Rotation = degree; return; } button.Animate().RotationBy(degree).SetDuration(250).Start(); }