Насколько я знаю, вы не можете сделать это в формах Xamarin только с помощью кнопки.Для этого потребуется добавить еще пару элементов на свою страницу.Затем вы можете использовать встроенную систему анимации Xamarin, чтобы адаптировать размеры элемента и активировать / деактивировать их свойства IsVisible во время вашей анимации.
Однако вот как я бы это сделал:
- Вставьте сетку с 1 строкой и 1 столбцом, где ваша кнопка должна быть
- Поместите кнопку в эту сетку
- Добавьте индикатор активности в сетку
- ДобавитьCircleView в сетку (вы должны извлечь из BoxView и использовать пользовательский рендер, чтобы сделать его закругленными углами).Убедитесь, что CircleView имеет те же измерения, что и индикатор активности
Теперь установите для IsVisible значение false для индикатора активности и CircleView.После того, как вы нажали кнопку входа в систему, вы можете установить текст кнопки в пустую строку и использовать пользовательскую анимацию (см. https://docs.microsoft.com/de-de/xamarin/xamarin-forms/user-interface/animation/custom), чтобы анимировать по ширине или левому и правому полям кнопки, пока она не сузится.вниз настолько, что его закругленные углы образуют круг и соответствуют размеру индикатора активности.
Вы можете использовать готовый делегат пользовательской анимации, чтобы установить для свойства IsVisible кнопки значение false и для индикатора активности значение true.
Как только ваша процедура входа в систему (я полагаю, вы отправите какой-то запрос и получите данные из ответа), установите IsVisible для индикатора активности на false, для кругового обзора - true, а затемиспользуйте другую пользовательскую анимацию для анимации ширины и высоты круга.
Также убедитесь, что для свойства IsClippedToBounds вашей сетки установлено значение false, поскольку в противном случае представление круга не сможет расти вне своей содержащей сетки.