Есть ли способ анимировать ширину кнопки программно с обеих сторон? - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу иметь возможность анимированного изменения размера кнопки с обеих сторон, а сейчас я могу сделать это с одной стороны справа налево.

Код ->

double Height = Button1.Height;
bool x = await Button1.LayoutTo(new Rectangle(new Point(Button1.X, Button1.Y), new Size(150, Height)), 1200,Easing.Linear);

Кнопка ->

<StackLayout VerticalOptions="Center">
        <Grid >
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Button x:Name="Button1" Grid.Row="0" Clicked="Button1_Clicked" BorderRadius="20" HorizontalOptions="CenterAndExpand" WidthRequest="1500" />
            <!--<ActivityIndicator Grid.Row="1" IsRunning="true" ></ActivityIndicator>-->
        </Grid>
    </StackLayout>

(до анимации) ->

(после анимации) ->

(хочу) ->

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Если Resize - это все, что вы собираетесь сделать, используйте ScaleXTo с AnchorX, установленным на 0,5 (по умолчанию).

Установите AnchorX в XAMl:

<Button
    x:Name="Button1"
    Grid.Row="0"
    Clicked="Button1_Clicked"
    BorderRadius="20"
    AnchorX="0.5"
    HorizontalOptions="CenterAndExpand"
    WidthRequest="1500" />

Используйте ScaleXTo in cs

void Button1_Clicked(System.Object sender, System.EventArgs e)
{
    if (Button1.ScaleX < 1)
    {
        Button1.ScaleXTo(1);
    }
    else
    {
        Button1.ScaleXTo(0.5);
    }
}

Поверните его и прокомментируйте, если потребуется дополнительная информация. Надеюсь, это поможет.

0 голосов
/ 06 февраля 2020

После прочтения о методе LayoutTo я нашел это Статья

Цитата:

Первое, для чего он предназначен. LayoutTo фактически используется, чтобы выложить ребенка в серию анимированных шагов в новое место. Это звучит полезно, но есть пара важных вещей, на которые стоит обратить внимание.

  • Он предназначен только для использования подклассами Xamarin.Forms.Layout, а не внешне.
  • Это глупо разоблачено точно так же, как и другие методы анимации.
  • Изначально будет казаться, что вы делаете то, что вы хотите, но все, что запускает ретрансляцию, приведет к тому, что ваша точка обзора вернется к исходному положению.

Так что я предполагаю, что LayoutTo не принимает во внимание LayoutOptions для этого элемента, поэтому лучшим решением было бы использование других методов анимации, таких как TranslateTo или Animation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...