HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: android, floating action button</p>
1 <p>Теги: android, floating action button</p>
2 <p>В этом уроке мы продолжим рассматривать возможности анимации летающей кнопки<strong>Floating Action Button</strong>.</p>
2 <p>В этом уроке мы продолжим рассматривать возможности анимации летающей кнопки<strong>Floating Action Button</strong>.</p>
3 <p>Для этого используем проект, созданный в<a>предыдущем уроке</a>, где мы делали эффект плавного скрытия и появления кнопки, и создадим для этой кнопки дополнительный эффект вращения. Если вы ещё не успели ознакомиться с предыдущим уроком, то рекомендую начать с него. Давайте теперь перейдём к каталогу ресурсов проекта. Здесь зайдём в каталог<strong>anim</strong>, в котором хранятся файлы с настройкой анимации. И первым делом откроем файл, отвечающий за скрытие кнопки, т.е.<strong>fab_hide.xml</strong>. К двум существующим в нём элементам<strong>scale</strong>и<strong>alpha</strong>добавим элемент<strong>rotate</strong>. Именно этот элемент отвечает за вращение кнопки. После добавления содержимое файла<strong>fab_hide.xml</strong>должно быть следующим:</p>
3 <p>Для этого используем проект, созданный в<a>предыдущем уроке</a>, где мы делали эффект плавного скрытия и появления кнопки, и создадим для этой кнопки дополнительный эффект вращения. Если вы ещё не успели ознакомиться с предыдущим уроком, то рекомендую начать с него. Давайте теперь перейдём к каталогу ресурсов проекта. Здесь зайдём в каталог<strong>anim</strong>, в котором хранятся файлы с настройкой анимации. И первым делом откроем файл, отвечающий за скрытие кнопки, т.е.<strong>fab_hide.xml</strong>. К двум существующим в нём элементам<strong>scale</strong>и<strong>alpha</strong>добавим элемент<strong>rotate</strong>. Именно этот элемент отвечает за вращение кнопки. После добавления содержимое файла<strong>fab_hide.xml</strong>должно быть следующим:</p>
4 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" android:shareInterpolator="true"&gt; &lt;scale android:fromXScale="1.0" android:fromYScale="1.0" android:toXScale="0.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" /&gt; &lt;alpha android:fromAlpha="1.0" android:toAlpha="0.0" /&gt; &lt;rotate android:fromDegrees="0" android:toDegrees="-360" android:pivotX="50%" android:pivotY="50%" /&gt; &lt;/set&gt;<p>Атрибут элемента<strong>rotate fromDegrees</strong>отвечает за угол наклона кнопки<strong>Floating Action Button</strong>вправо, или влево на момент начало анимации. А атрибут<strong>toDegrees</strong>определяет угол, на который будет повёрнута кнопка за установленный период анимации. Значения углов определяется в градусах, т. е. 360 будет означать полный оборот кнопки за период анимации, продолжительность которой определяет duration="1000″. Знак "-" (минус) означает, что вращение будет происходить против часовой стрелки. Если необходимо, чтобы кнопка за период анимации делала два полных оборота, то нужно указать 360 * 2, т.е. 720 градусов. Атрибуты<strong>pivotX</strong>и<strong>pivotY</strong>определяют координату центра по осям X и Y, относительно которой будет происходить вращение кнопки. Т.е. в данном случаи центром вращения кнопки будет геометрический центр самой кнопки.</p>
4 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" android:shareInterpolator="true"&gt; &lt;scale android:fromXScale="1.0" android:fromYScale="1.0" android:toXScale="0.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" /&gt; &lt;alpha android:fromAlpha="1.0" android:toAlpha="0.0" /&gt; &lt;rotate android:fromDegrees="0" android:toDegrees="-360" android:pivotX="50%" android:pivotY="50%" /&gt; &lt;/set&gt;<p>Атрибут элемента<strong>rotate fromDegrees</strong>отвечает за угол наклона кнопки<strong>Floating Action Button</strong>вправо, или влево на момент начало анимации. А атрибут<strong>toDegrees</strong>определяет угол, на который будет повёрнута кнопка за установленный период анимации. Значения углов определяется в градусах, т. е. 360 будет означать полный оборот кнопки за период анимации, продолжительность которой определяет duration="1000″. Знак "-" (минус) означает, что вращение будет происходить против часовой стрелки. Если необходимо, чтобы кнопка за период анимации делала два полных оборота, то нужно указать 360 * 2, т.е. 720 градусов. Атрибуты<strong>pivotX</strong>и<strong>pivotY</strong>определяют координату центра по осям X и Y, относительно которой будет происходить вращение кнопки. Т.е. в данном случаи центром вращения кнопки будет геометрический центр самой кнопки.</p>
5 <p>Теперь перейдём к файлу, который отвечает за появление кнопки, т.е. к<strong>fab_show.xml</strong>. Туда также добавим элемент<strong>rotate</strong>, только значение атрибута<strong>toDegrees</strong>изменим с отрицательного на положительное. Его содержимое должно стать следующим:</p>
5 <p>Теперь перейдём к файлу, который отвечает за появление кнопки, т.е. к<strong>fab_show.xml</strong>. Туда также добавим элемент<strong>rotate</strong>, только значение атрибута<strong>toDegrees</strong>изменим с отрицательного на положительное. Его содержимое должно стать следующим:</p>
6 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" android:shareInterpolator="true"&gt; &lt;scale android:fromXScale="0.0" android:fromYScale="0.0" android:toXScale="1.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" /&gt; &lt;alpha android:fromAlpha="0.0" android:toAlpha="1.0" /&gt; &lt;rotate android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" /&gt; &lt;/set&gt;<p>Подробнее смотрите в<a>видеоролике</a>.</p>
6 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" android:shareInterpolator="true"&gt; &lt;scale android:fromXScale="0.0" android:fromYScale="0.0" android:toXScale="1.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" /&gt; &lt;alpha android:fromAlpha="0.0" android:toAlpha="1.0" /&gt; &lt;rotate android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" /&gt; &lt;/set&gt;<p>Подробнее смотрите в<a>видеоролике</a>.</p>
7  
7