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
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" android:shareInterpolator="true"> <scale android:fromXScale="1.0" android:fromYScale="1.0" android:toXScale="0.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" /> <rotate android:fromDegrees="0" android:toDegrees="-360" android:pivotX="50%" android:pivotY="50%" /> </set><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
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" android:shareInterpolator="true"> <scale android:fromXScale="1.0" android:fromYScale="1.0" android:toXScale="0.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" /> <rotate android:fromDegrees="0" android:toDegrees="-360" android:pivotX="50%" android:pivotY="50%" /> </set><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
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" android:shareInterpolator="true"> <scale android:fromXScale="0.0" android:fromYScale="0.0" android:toXScale="1.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" /> <rotate android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" /> </set><p>Подробнее смотрите в<a>видеоролике</a>.</p>
6
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" android:shareInterpolator="true"> <scale android:fromXScale="0.0" android:fromYScale="0.0" android:toXScale="1.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" /> <rotate android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" /> </set><p>Подробнее смотрите в<a>видеоролике</a>.</p>
7
7