Android studio rotate animation

Содержание
  1. RotateAnimation и
  2. rotate_center.xml
  3. rotate_corner.xml
  4. Метроном
  5. Аттракцион
  6. Бутылочка
  7. Спиннер (Fidget Spinner)
  8. Анимация преобразований
  9. Создание анимации в XML-файле
  10. Атрибуты анимации
  11. Элемент
  12. Элемент Постепенно изменяющаяся анимация прозрачности при помощи AlphaAnimation. Поддерживает следующие атрибуты: fromAlpha — начальное значение прозрачности объекта; toAlpha — конечное значение прозрачности объекта; Атрибуты содержат значение прозрачности от 0 до 1 типа Float, где 0 означает полную прозрачность объекта. Элемент Элемент управляет анимацией изменения размеров объекта и представляет класс ScaleAnimation. Вы можете определить центральную точку изображения (закрепить центр анимации изображения), относительно которой будет изменяться масштабирование объекта. Элемент поддерживает следующие атрибуты: fromxScale — начальный масштаб по X. Допустимы значения от 0 до 1 типа Float toxScale — конечный масштаб по X. Допустимы значения от 0 до 1 типа Float fromYScale — начальный масштаб по Y. Допустимы значения от 0 до 1 типа Float toYScale — конечный масштаб по Y. Допустимы значения от 0 до 1 типа Float pivotX — Х-координата закрепленного центра. Описывает центральную точку масштабирования в процентах от ширины от 0% до 100% pivotY — Y-координата закреплённого центра. Описывает центральную точку масштабирования в процентах от высоты от 0% до 100% Элемент Элемент создаёт вертикальную или горизонтальную анимацию движения. Представляет класс TranslateAnimation и поддерживает следующие атрибуты: fromXDelta — начальное положение по X toXDelta — конечное положение по X fromYDelta — начальное положение по Y toYDelta — конечное положение по Y Атрибуты должны быть в любом из следующих трёх форматов: Абсолютное значение Значения в процентах от -100% до 100% Значения в процентах от -100%p до 100%p, где p указывает процент относительно его родителя. Слайд-шоу Например, для эффекта слайд-шоу, когда один элемент выталкивает полностью другой элемент, реализуется двумя анимациями справо-налево или слева-направо. Элемент Элемент предназначен для анимации вращения и представляет класс RotateAnimation. Поддерживает следующие атрибуты: fromDegrees — начальный угол вращения в градусах toDegrees — конечный угол вращения в градусах pivotX — координата X центра вращения в пикселах; pivotY — координата Y центра вращения в пикселах Примеры с анимацией преобразований Можно создать несколько файлов анимации и применять их для одного объекта. Рассмотрим работу анимации на примере прямоугольника. К сожалению, у меня не заработал пример с изменением прозрачности (alpha), может вам повезет больше. (Как рассказал один из читателей, пример работает на эмуляторе 2.1, а на эмуляторе 2.3.3 уже нет). Создайте новый проект и в каталоге res/anim/ проекта создайте пять файлов с XML-анимацией: alpha.xml, rotate.xml, scale.xml, translate.xml и файл combination.xml, в котором мы будем использовать комбинацию различных объектов для создания смешанной анимации. alpha.xml rotate.xml scale.xml translate.xml combination.xml shape.xml Фигуру прямоугольника для анимации определим в файле shape.xml, который будет находиться в каталоге res/drawable. Разметка Перейдем к разметке основной формы приложения (main.xml). Поместим элемент ImageView: Анимация Анимация запускается в коде следующим образом: надо создать объект Animation через вызов метода AnimationUtils.loadAnimation() и передать ему в качестве параметра контекст активности и ссылку на XML-файл анимации. Затем запускается анимация через метод View.startAnimation(), передавая в него объект Animation: AnimationListener В классе Animation есть интерфейс AnimationListener. Интерфейс AnimationListener позволяет создать обработчик событий, который срабатывает в начале или при завершении анимации. Используя его, вы можете совершать какие-либо операции, прежде чем (или после того как) анимация закончит работу. Это может быть изменение содержимого представления или последовательный показ нескольких анимаций. У интерфейса AnimationListener есть три метода обратного вызова: onAnimationEnd() onAnimationRepeat() onAnimationStart() В этих методах можно реализовать код обработки события запуска, окончания и перезапуска анимации. Например, при окончании анимации можно сделать объект анимации невидимым, а при запуске снова отобразить на экране: Вызовите метод setAnimationListener() из объекта Animation и передайте ему в качестве параметра реализацию интерфейса AnimationListener, при необходимости переопределив методы onAnimationEnd(), onAnimationStart() и onAnimationRepeat(). В основном классе создадим меню из пяти пунктов, соответствующих каждому типу запускаемой анимации: Alpha, Scale, Translate, Rotate и Комбинация. В качестве идентификаторов пунктов меню используем идентификаторы ресурсов XML-файлов анимации, упростив тем самым структуру метода onOptionsitemSeiected(), вызываемого при выборе пункта меню. Анимация графических файлов Анимация для графических файлов ничем особым не отличается от анимации для графических фигур. Рассмотрим на примере анимацию графического объекта, отображаемого в ImageView. Создайте новый проект и найдите какой-нибудь графический файл с изображением кота (но не собаки, иначе работать не будет!). В XML-файле анимации создадим следующую структуру: используем элемент для растягивания изображения и вложенный контейнер , в котором определим два дочерних элемента и для одновременного вращения и изменения размеров объекта. Данный файл необходимо сохраним в каталоге res/anim/ под любым именем, например, crazycat.xml crazycat.xml В файле разметки поместим кнопку для запуска анимации и один элемент ImageView для нашего изображения. Осталось написать программный код: При нажатии кнопки изображение кота сначала плавно растянется по горизонтали, затем одновременно повернется и уменьшится в размерах, после чего вернется в исходное состояние. Независимо оттого, как анимация изменяет размеры объекта или перемещает его на плоскости, границы элемента View, в который загружено изображение, останутся неизменными: ваша анимация не будет автоматически корректировать размеры представления для размещения объекта. Если анимация выйдет за границы родительского представления, произойдет отсечение объекта анимации. Анимация группы представлений Анимацию можно сделать и для нескольких представлений, объединив их в группу. Например, поместив представления в контейнер LinearLayout, причем можно использовать не только графические, но и текстовые представления. Принцип анимаци останется тем же. В файле разметки приложения разместите дочерний контейнер LinearLayout, в котором разместите ImageView с изображением и TextView с надписью. Для дочернего контейнера обязательно присвойте идентификатор, по которому вы сможете загрузить его в код программы и использовать для анимации. Код класса практически не будет отличаться от предыдущего примера, за исключением того, что мы работаем с анимацией не отдельного представления, а с анимацией группы представлений: Источник Android Rotate Animations (Clockwise / Anti Clockwise) with Examples In android, Rotate animation is used to change the appearance and behavior of the objects over a particular interval of time. The Rotate animation will provide a better look and feel for our applications. Generally, the animations are useful when we want to notify users about the changes happening in our app, such as new content loaded or new actions available, etc. To create an animation effect on the objects in our android application, we need to follow the below steps. Create XML File to Define Animation We need to create an XML file that defines the type of animation to perform in a new folder anim under res directory (res à anim à rotate.xml) with required properties. In case, if anim folder does not exist in res directory, create a new one. To use Rotate animation in our android applications, we need to define a new xml file with tag like as shown below. To Rotate animation in Clockwise, we need to set android :fromDegrees and android :toDegrees property values and these will defines a rotation angles like as shown below. xml version= «1.0» encoding= «utf-8» ?> set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» > rotate android :fromDegrees= «0» android :toDegrees= «360» android :pivotX= «50%» android :pivotY= «50%» android :duration= «5000»/> set > To Rotate animation in Anti Clockwise, we need to set android :fromDegrees and android :toDegrees property values and these will defines a rotation angles like as shown below. xml version= «1.0» encoding= «utf-8» ?> set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» > rotate android :fromDegrees= «360» android :toDegrees= «0» android :pivotX= «50%» android :pivotY= «50%» android :duration= «5000»/> set > Once we are done with creation of required animation XML files, we need to load those animation files using different properties. Android Load and Start the Animation In android, we can perform animations by using AnimationUtils component methods such as loadAnimation(). Following is the code snippet of loading and starting an animation using loadAnimation() and startAnimation() methods. Animation aniRotate = AnimationUtils.loadAnimation(getApplicationContext(),R.anim. rotate_clockwise ); img .startAnimation(aniRotate); If you observe above code snippet, we are adding an animation to the image using loadAnimation() method. The second parameter in loadAnimation() method is the name of our animation xml file. Here we used another method startAnimation() to apply the defined animation to imageview object. Now we will see how to implement rotate animation for imageview on button click in android applications with examples. Android Rotate Animation Example Following is the example of implementing rotate animations to rotate images in clockwise or anti-clockwise on button click in android applications. Create a new android application using android studio and give names as RotateExample. In case if you are not aware of creating an app in android studio check this article Android Hello World App. Once we create an application, open activity_main.xml file from \res\layout folder path and write the code like as shown below. activity_main.xml xml version= «1.0» encoding= «utf-8» ?> RelativeLayout xmlns: android = «http://schemas.android.com/apk/res/android» android :layout_width= «match_parent» android :layout_height= «match_parent» android :paddingLeft= «10dp» android :paddingRight= «10dp» > ImageView android :id= «@+id/imgvw» android :layout_width= «wrap_content» android :layout_height= «250dp» android :src= «@drawable/bangkok»/> Button android :id= «@+id/btnRClk» android :layout_below= «@+id/imgvw» android :layout_width= «wrap_content» android :layout_height= «wrap_content» android :text= «Clockwise» android :layout_marginLeft= «100dp»/> Button android :id= «@+id/btnRAClk» android :layout_width= «wrap_content» android :layout_height= «wrap_content» android :layout_alignBottom= «@+id/btnRClk» android :layout_toRightOf= «@+id/btnRClk» android :text= «Anti Clockwise»/> RelativeLayout > As discussed, we need to create an xml files to define rotate animation either in clockwise or anti clockwise in new folder anim under res directory (res à anim à rotate_clockwise.xml, rotate_anticlockwise.xml) with required properties. In case anim folder not exists in res directory, create a new one. Following is the example of creating XML files (rotate_clockwise.xml, rotate_anticlockwise.xml) under anim folder to define rotate animation in clockwise and anti-clockwise properties. Now open rotate_clockwise.xml file and write the code to set rotate animation properties to rotate the object in clockwise like as shown below. rotate_clockwise.xml xml version= «1.0» encoding= «utf-8» ?> set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» > rotate android :fromDegrees= «0» android :toDegrees= «360» android :pivotX= «50%» android :pivotY= «50%» android :duration= «5000»/> set > Now open rotate_anticlockwise.xml file and write the code to set rotate animation properties to rotate the object in anti-clockwise like as shown below rotate_anticlockwise.xml xml version= «1.0» encoding= «utf-8» ?> set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» > rotate android :fromDegrees= «360» android :toDegrees= «0» android :pivotX= «50%» android :pivotY= «50%» android :duration= «5000»/> set > Now open your main activity file MainActivity.java from \java\com.tutlane.rotateexample path and write the code like as shown below MainActivity.java package com.tutlane.rotateexample; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends AppCompatActivity <
    private Button btnrclock ; private Button btnrantick ; private ImageView img ; @Override protected void onCreate(Bundle savedInstanceState) <
    super .onCreate(savedInstanceState); setContentView(R.layout. activity_main ); btnrclock = (Button)findViewById(R.id. btnRClk ); btnrantick = (Button)findViewById(R.id. btnRAClk ); img = (ImageView)findViewById(R.id. imgvw ); btnrclock .setOnClickListener( new View.OnClickListener() <
    @Override public void onClick(View v) <
    Animation aniRotateClk = AnimationUtils.loadAnimation(getApplicationContext(),R.anim. rotate_clockwise ); img .startAnimation(aniRotateClk); > >); btnrantick .setOnClickListener( new View.OnClickListener() <
    @Override public void onClick(View v) <
    Animation animRotateAclk = AnimationUtils.loadAnimation(getApplicationContext(),R.anim. rotate_anticlockwise ); img .startAnimation(animRotateAclk); > >); > > If you observe above code, we are adding an animation to the image using loadAnimation() method used startAnimation() method to apply the defined animation to imageview object. Output of Android Rotate Animation Example When we run the above program in the android studio we will get the result as shown below. If you observe above result, whenever we are clicking on Clockwise or Anti Clockwise buttons, the image will rotate either in clockwise or anti-clockwise based on our functionality. This is how we can implement rotate animations for imageview in android applications based on our requirements. Источник
  13. Элемент
  14. Элемент Элемент создаёт вертикальную или горизонтальную анимацию движения. Представляет класс TranslateAnimation и поддерживает следующие атрибуты: fromXDelta — начальное положение по X toXDelta — конечное положение по X fromYDelta — начальное положение по Y toYDelta — конечное положение по Y Атрибуты должны быть в любом из следующих трёх форматов: Абсолютное значение Значения в процентах от -100% до 100% Значения в процентах от -100%p до 100%p, где p указывает процент относительно его родителя. Слайд-шоу Например, для эффекта слайд-шоу, когда один элемент выталкивает полностью другой элемент, реализуется двумя анимациями справо-налево или слева-направо. Элемент Элемент предназначен для анимации вращения и представляет класс RotateAnimation. Поддерживает следующие атрибуты: fromDegrees — начальный угол вращения в градусах toDegrees — конечный угол вращения в градусах pivotX — координата X центра вращения в пикселах; pivotY — координата Y центра вращения в пикселах Примеры с анимацией преобразований Можно создать несколько файлов анимации и применять их для одного объекта. Рассмотрим работу анимации на примере прямоугольника. К сожалению, у меня не заработал пример с изменением прозрачности (alpha), может вам повезет больше. (Как рассказал один из читателей, пример работает на эмуляторе 2.1, а на эмуляторе 2.3.3 уже нет). Создайте новый проект и в каталоге res/anim/ проекта создайте пять файлов с XML-анимацией: alpha.xml, rotate.xml, scale.xml, translate.xml и файл combination.xml, в котором мы будем использовать комбинацию различных объектов для создания смешанной анимации. alpha.xml rotate.xml scale.xml translate.xml combination.xml shape.xml Фигуру прямоугольника для анимации определим в файле shape.xml, который будет находиться в каталоге res/drawable. Разметка Перейдем к разметке основной формы приложения (main.xml). Поместим элемент ImageView: Анимация Анимация запускается в коде следующим образом: надо создать объект Animation через вызов метода AnimationUtils.loadAnimation() и передать ему в качестве параметра контекст активности и ссылку на XML-файл анимации. Затем запускается анимация через метод View.startAnimation(), передавая в него объект Animation: AnimationListener В классе Animation есть интерфейс AnimationListener. Интерфейс AnimationListener позволяет создать обработчик событий, который срабатывает в начале или при завершении анимации. Используя его, вы можете совершать какие-либо операции, прежде чем (или после того как) анимация закончит работу. Это может быть изменение содержимого представления или последовательный показ нескольких анимаций. У интерфейса AnimationListener есть три метода обратного вызова: onAnimationEnd() onAnimationRepeat() onAnimationStart() В этих методах можно реализовать код обработки события запуска, окончания и перезапуска анимации. Например, при окончании анимации можно сделать объект анимации невидимым, а при запуске снова отобразить на экране: Вызовите метод setAnimationListener() из объекта Animation и передайте ему в качестве параметра реализацию интерфейса AnimationListener, при необходимости переопределив методы onAnimationEnd(), onAnimationStart() и onAnimationRepeat(). В основном классе создадим меню из пяти пунктов, соответствующих каждому типу запускаемой анимации: Alpha, Scale, Translate, Rotate и Комбинация. В качестве идентификаторов пунктов меню используем идентификаторы ресурсов XML-файлов анимации, упростив тем самым структуру метода onOptionsitemSeiected(), вызываемого при выборе пункта меню. Анимация графических файлов Анимация для графических файлов ничем особым не отличается от анимации для графических фигур. Рассмотрим на примере анимацию графического объекта, отображаемого в ImageView. Создайте новый проект и найдите какой-нибудь графический файл с изображением кота (но не собаки, иначе работать не будет!). В XML-файле анимации создадим следующую структуру: используем элемент для растягивания изображения и вложенный контейнер , в котором определим два дочерних элемента и для одновременного вращения и изменения размеров объекта. Данный файл необходимо сохраним в каталоге res/anim/ под любым именем, например, crazycat.xml crazycat.xml В файле разметки поместим кнопку для запуска анимации и один элемент ImageView для нашего изображения. Осталось написать программный код: При нажатии кнопки изображение кота сначала плавно растянется по горизонтали, затем одновременно повернется и уменьшится в размерах, после чего вернется в исходное состояние. Независимо оттого, как анимация изменяет размеры объекта или перемещает его на плоскости, границы элемента View, в который загружено изображение, останутся неизменными: ваша анимация не будет автоматически корректировать размеры представления для размещения объекта. Если анимация выйдет за границы родительского представления, произойдет отсечение объекта анимации. Анимация группы представлений Анимацию можно сделать и для нескольких представлений, объединив их в группу. Например, поместив представления в контейнер LinearLayout, причем можно использовать не только графические, но и текстовые представления. Принцип анимаци останется тем же. В файле разметки приложения разместите дочерний контейнер LinearLayout, в котором разместите ImageView с изображением и TextView с надписью. Для дочернего контейнера обязательно присвойте идентификатор, по которому вы сможете загрузить его в код программы и использовать для анимации. Код класса практически не будет отличаться от предыдущего примера, за исключением того, что мы работаем с анимацией не отдельного представления, а с анимацией группы представлений: Источник Android Rotate Animations (Clockwise / Anti Clockwise) with Examples In android, Rotate animation is used to change the appearance and behavior of the objects over a particular interval of time. The Rotate animation will provide a better look and feel for our applications. Generally, the animations are useful when we want to notify users about the changes happening in our app, such as new content loaded or new actions available, etc. To create an animation effect on the objects in our android application, we need to follow the below steps. Create XML File to Define Animation We need to create an XML file that defines the type of animation to perform in a new folder anim under res directory (res à anim à rotate.xml) with required properties. In case, if anim folder does not exist in res directory, create a new one. To use Rotate animation in our android applications, we need to define a new xml file with tag like as shown below. To Rotate animation in Clockwise, we need to set android :fromDegrees and android :toDegrees property values and these will defines a rotation angles like as shown below. xml version= «1.0» encoding= «utf-8» ?> set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» > rotate android :fromDegrees= «0» android :toDegrees= «360» android :pivotX= «50%» android :pivotY= «50%» android :duration= «5000»/> set > To Rotate animation in Anti Clockwise, we need to set android :fromDegrees and android :toDegrees property values and these will defines a rotation angles like as shown below. xml version= «1.0» encoding= «utf-8» ?> set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» > rotate android :fromDegrees= «360» android :toDegrees= «0» android :pivotX= «50%» android :pivotY= «50%» android :duration= «5000»/> set > Once we are done with creation of required animation XML files, we need to load those animation files using different properties. Android Load and Start the Animation In android, we can perform animations by using AnimationUtils component methods such as loadAnimation(). Following is the code snippet of loading and starting an animation using loadAnimation() and startAnimation() methods. Animation aniRotate = AnimationUtils.loadAnimation(getApplicationContext(),R.anim. rotate_clockwise ); img .startAnimation(aniRotate); If you observe above code snippet, we are adding an animation to the image using loadAnimation() method. The second parameter in loadAnimation() method is the name of our animation xml file. Here we used another method startAnimation() to apply the defined animation to imageview object. Now we will see how to implement rotate animation for imageview on button click in android applications with examples. Android Rotate Animation Example Following is the example of implementing rotate animations to rotate images in clockwise or anti-clockwise on button click in android applications. Create a new android application using android studio and give names as RotateExample. In case if you are not aware of creating an app in android studio check this article Android Hello World App. Once we create an application, open activity_main.xml file from \res\layout folder path and write the code like as shown below. activity_main.xml xml version= «1.0» encoding= «utf-8» ?> RelativeLayout xmlns: android = «http://schemas.android.com/apk/res/android» android :layout_width= «match_parent» android :layout_height= «match_parent» android :paddingLeft= «10dp» android :paddingRight= «10dp» > ImageView android :id= «@+id/imgvw» android :layout_width= «wrap_content» android :layout_height= «250dp» android :src= «@drawable/bangkok»/> Button android :id= «@+id/btnRClk» android :layout_below= «@+id/imgvw» android :layout_width= «wrap_content» android :layout_height= «wrap_content» android :text= «Clockwise» android :layout_marginLeft= «100dp»/> Button android :id= «@+id/btnRAClk» android :layout_width= «wrap_content» android :layout_height= «wrap_content» android :layout_alignBottom= «@+id/btnRClk» android :layout_toRightOf= «@+id/btnRClk» android :text= «Anti Clockwise»/> RelativeLayout > As discussed, we need to create an xml files to define rotate animation either in clockwise or anti clockwise in new folder anim under res directory (res à anim à rotate_clockwise.xml, rotate_anticlockwise.xml) with required properties. In case anim folder not exists in res directory, create a new one. Following is the example of creating XML files (rotate_clockwise.xml, rotate_anticlockwise.xml) under anim folder to define rotate animation in clockwise and anti-clockwise properties. Now open rotate_clockwise.xml file and write the code to set rotate animation properties to rotate the object in clockwise like as shown below. rotate_clockwise.xml xml version= «1.0» encoding= «utf-8» ?> set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» > rotate android :fromDegrees= «0» android :toDegrees= «360» android :pivotX= «50%» android :pivotY= «50%» android :duration= «5000»/> set > Now open rotate_anticlockwise.xml file and write the code to set rotate animation properties to rotate the object in anti-clockwise like as shown below rotate_anticlockwise.xml xml version= «1.0» encoding= «utf-8» ?> set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» > rotate android :fromDegrees= «360» android :toDegrees= «0» android :pivotX= «50%» android :pivotY= «50%» android :duration= «5000»/> set > Now open your main activity file MainActivity.java from \java\com.tutlane.rotateexample path and write the code like as shown below MainActivity.java package com.tutlane.rotateexample; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends AppCompatActivity <
    private Button btnrclock ; private Button btnrantick ; private ImageView img ; @Override protected void onCreate(Bundle savedInstanceState) <
    super .onCreate(savedInstanceState); setContentView(R.layout. activity_main ); btnrclock = (Button)findViewById(R.id. btnRClk ); btnrantick = (Button)findViewById(R.id. btnRAClk ); img = (ImageView)findViewById(R.id. imgvw ); btnrclock .setOnClickListener( new View.OnClickListener() <
    @Override public void onClick(View v) <
    Animation aniRotateClk = AnimationUtils.loadAnimation(getApplicationContext(),R.anim. rotate_clockwise ); img .startAnimation(aniRotateClk); > >); btnrantick .setOnClickListener( new View.OnClickListener() <
    @Override public void onClick(View v) <
    Animation animRotateAclk = AnimationUtils.loadAnimation(getApplicationContext(),R.anim. rotate_anticlockwise ); img .startAnimation(animRotateAclk); > >); > > If you observe above code, we are adding an animation to the image using loadAnimation() method used startAnimation() method to apply the defined animation to imageview object. Output of Android Rotate Animation Example When we run the above program in the android studio we will get the result as shown below. If you observe above result, whenever we are clicking on Clockwise or Anti Clockwise buttons, the image will rotate either in clockwise or anti-clockwise based on our functionality. This is how we can implement rotate animations for imageview in android applications based on our requirements. Источник
  15. Слайд-шоу
  16. Элемент
  17. Примеры с анимацией преобразований
  18. alpha.xml
  19. rotate.xml
  20. scale.xml
  21. translate.xml
  22. combination.xml
  23. shape.xml
  24. Разметка
  25. Анимация
  26. AnimationListener
  27. Анимация графических файлов
  28. crazycat.xml
  29. Анимация группы представлений
  30. Android Rotate Animations (Clockwise / Anti Clockwise) with Examples
  31. Create XML File to Define Animation
  32. Android Load and Start the Animation
  33. Android Rotate Animation Example
  34. activity_main.xml
  35. rotate_clockwise.xml
  36. rotate_anticlockwise.xml
  37. MainActivity.java
  38. Output of Android Rotate Animation Example
Читайте также:  Get iphone or android

RotateAnimation и

Используйте атрибуты fromDegrees и toDegrees внутри тега , чтобы задать начальный и конечный углы поворота вокруг опорной точки. Опорная точка указывается с помощью атрибутов pivotX и pivotY, которые содержат процентные значения относительно ширины и высоты объекта Drawable соответственно.

Рассмотрим примеры вращения объекта. Создадим проект, в котором ImageView будет постоянно вращаться либо относительно своего центра, либо вокруг своего угла. В папке res/anim создаем два файла:

rotate_center.xml

rotate_corner.xml

Разместим на форме две кнопки и ImageView:

Теперь код для анимации:

Запускайте проект и вращайте картинку.

Класс RotateAnimation наследуется от класса Animation и отвечает за анимацию вращения.

Метроном

Добавим на экран ImageButton, который будет объектом вращения.

Напишем обработчик щелчка кнопки:

Числа для вращения я подбирал наугад, можете использовать свои значения, зависящие от размеров экрана и т.п. В данном примере движение картинки напоминает работу метронома.

Аттракцион

Следующая анимация напомнила мне аттракцион в парке развлечений. За основу взять пример из урока, где мы учились выводить текст вдоль окружности.

Если нужно, чтобы был эффект вращения текста внутри окружности, то следует поколдовать с координатами, например, у меня вышло так:

Бутылочка

Можно написать даже простую игру «Бутылочка». Понадобится изображение бутылки с молоком, которую потом отдадим котёнку.

При нажатии на бутылку запускается вращение.

Не забыли про мою просьбу отдать бутылку котёнку?

Спиннер (Fidget Spinner)

Крутить можно не только бутылку, но и спиннер. На скорую руку написал приложение.

Картинку рисовал в векторе, а также прикрутил к веб-странице.

Источник

Анимация преобразований

Анимация может выполняться в виде ряда простых преобразований — изменение позиции, размера, угла вращения и уровня прозрачности на поверхности объекта View. Например, у компонента TextView можно перемещать, вращать, уменьшать или увеличивать текст. Если TextView имеет фоновое изображение, оно будет преобразовано наряду с текстом. Пакет android.view.animation содержит необходимые классы для анимации с промежуточными кадрами.

Читайте также:  All android frp apk

Основные классы анимации и их соответствия в XML:

Команды анимации определяют преобразования, которые необходимо произвести над объектом. Преобразования могут быть последовательными или одновременными. Каждое преобразование принимает набор параметров, определённых для этого преобразования (начальный размер, конечный размер при изменении размера, стартовый угол и конечный угол при вращении объекта и т. д.), а также набор общих параметров (например, начального времени и продолжительности). Если требуется сделать несколько преобразований одновременно, им задают одинаковое начальное время. Если требуется сделать последовательные преобразования, задается их время старта плюс продолжительность предыдущего преобразования.

Последовательность команд анимации определяется в XML-файле (предпочтительно) или в программном коде.

Создание анимации в XML-файле

XML-файл анимации размещают в каталоге res/anim/ вашего проекта. Файл должен иметь единственный корневой элемент: это будет любой из элементов , , , или элемент , который является контейнером для этих четырех компонентов (и может включать в себя другой контейнер ).

По умолчанию все элементы применяются одновременно. Чтобы запускать элементы последовательно, необходимо определить атрибут startOffset и указать значение в миллисекундах, например:

Атрибуты анимации

  • duration — продолжительность эффекта в миллисекундах
  • startOffset — начальное время смещения для этого эффекта, в миллисекундах
  • fillBefore — когда установлен в true, то преобразование анимации применяется перед началом анимации
  • fillAfter — когда установлен в true, то преобразование применяется после конца анимации
  • repeatCount — определяет число повторений анимации, можно использовать значение infinity (бесконечность)
  • repeatMode — определяет поведение анимации при ее окончании. Возможные варианты: restart (перезапустить без изменений) или reverse (изменить анимацию в обратном направлении)
  • zAdjustment — определяет режим упорядочения оси Z, чтобы использовать при выполнении анимации (нормаль, вершина или основание)
  • interpolator — определяет постоянную скорости, которая описывает динамику визуальной деятельности в зависимости от времени или, говоря простым языком, определяет скорость изменения анимации. Можно использовать любой из элементов подкласса интерполятора, определенных в R.styleable, например: android:interpolator=»@android:anim/decelerate_interpolator»

Элемент

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

Элемент

Постепенно изменяющаяся анимация прозрачности при помощи AlphaAnimation. Поддерживает следующие атрибуты:

  • fromAlpha — начальное значение прозрачности объекта;
  • toAlpha — конечное значение прозрачности объекта;

Атрибуты содержат значение прозрачности от 0 до 1 типа Float, где 0 означает полную прозрачность объекта.

Элемент

Элемент управляет анимацией изменения размеров объекта и представляет класс ScaleAnimation. Вы можете определить центральную точку изображения (закрепить центр анимации изображения), относительно которой будет изменяться масштабирование объекта. Элемент поддерживает следующие атрибуты:

  • fromxScale — начальный масштаб по X. Допустимы значения от 0 до 1 типа Float
  • toxScale — конечный масштаб по X. Допустимы значения от 0 до 1 типа Float
  • fromYScale — начальный масштаб по Y. Допустимы значения от 0 до 1 типа Float
  • toYScale — конечный масштаб по Y. Допустимы значения от 0 до 1 типа Float
  • pivotX — Х-координата закрепленного центра. Описывает центральную точку масштабирования в процентах от ширины от 0% до 100%
  • pivotY — Y-координата закреплённого центра. Описывает центральную точку масштабирования в процентах от высоты от 0% до 100%

Элемент

Элемент создаёт вертикальную или горизонтальную анимацию движения. Представляет класс TranslateAnimation и поддерживает следующие атрибуты:

  • fromXDelta — начальное положение по X
  • toXDelta — конечное положение по X
  • fromYDelta — начальное положение по Y
  • toYDelta — конечное положение по Y

Атрибуты должны быть в любом из следующих трёх форматов:

  • Абсолютное значение
  • Значения в процентах от -100% до 100%
  • Значения в процентах от -100%p до 100%p, где p указывает процент относительно его родителя.

Слайд-шоу

Например, для эффекта слайд-шоу, когда один элемент выталкивает полностью другой элемент, реализуется двумя анимациями справо-налево или слева-направо.

Элемент

Элемент предназначен для анимации вращения и представляет класс RotateAnimation. Поддерживает следующие атрибуты:

  • fromDegrees — начальный угол вращения в градусах
  • toDegrees — конечный угол вращения в градусах
  • pivotX — координата X центра вращения в пикселах;
  • pivotY — координата Y центра вращения в пикселах

Примеры с анимацией преобразований

Можно создать несколько файлов анимации и применять их для одного объекта. Рассмотрим работу анимации на примере прямоугольника. К сожалению, у меня не заработал пример с изменением прозрачности (alpha), может вам повезет больше. (Как рассказал один из читателей, пример работает на эмуляторе 2.1, а на эмуляторе 2.3.3 уже нет).

Создайте новый проект и в каталоге res/anim/ проекта создайте пять файлов с XML-анимацией: alpha.xml, rotate.xml, scale.xml, translate.xml и файл combination.xml, в котором мы будем использовать комбинацию различных объектов для создания смешанной анимации.

alpha.xml

rotate.xml

scale.xml

translate.xml

combination.xml

shape.xml

Фигуру прямоугольника для анимации определим в файле shape.xml, который будет находиться в каталоге res/drawable.

Разметка

Перейдем к разметке основной формы приложения (main.xml). Поместим элемент ImageView:

Анимация

Анимация запускается в коде следующим образом: надо создать объект Animation через вызов метода AnimationUtils.loadAnimation() и передать ему в качестве параметра контекст активности и ссылку на XML-файл анимации. Затем запускается анимация через метод View.startAnimation(), передавая в него объект Animation:

AnimationListener

В классе Animation есть интерфейс AnimationListener. Интерфейс AnimationListener позволяет создать обработчик событий, который срабатывает в начале или при завершении анимации. Используя его, вы можете совершать какие-либо операции, прежде чем (или после того как) анимация закончит работу. Это может быть изменение содержимого представления или последовательный показ нескольких анимаций.

У интерфейса AnimationListener есть три метода обратного вызова:

  • onAnimationEnd()
  • onAnimationRepeat()
  • onAnimationStart()

В этих методах можно реализовать код обработки события запуска, окончания и перезапуска анимации. Например, при окончании анимации можно сделать объект анимации невидимым, а при запуске снова отобразить на экране:

Вызовите метод setAnimationListener() из объекта Animation и передайте ему в качестве параметра реализацию интерфейса AnimationListener, при необходимости переопределив методы onAnimationEnd(), onAnimationStart() и onAnimationRepeat().

В основном классе создадим меню из пяти пунктов, соответствующих каждому типу запускаемой анимации: Alpha, Scale, Translate, Rotate и Комбинация. В качестве идентификаторов пунктов меню используем идентификаторы ресурсов XML-файлов анимации, упростив тем самым структуру метода onOptionsitemSeiected(), вызываемого при выборе пункта меню.

Анимация графических файлов

Анимация для графических файлов ничем особым не отличается от анимации для графических фигур. Рассмотрим на примере анимацию графического объекта, отображаемого в ImageView. Создайте новый проект и найдите какой-нибудь графический файл с изображением кота (но не собаки, иначе работать не будет!).

В XML-файле анимации создадим следующую структуру: используем элемент для растягивания изображения и вложенный контейнер , в котором определим два дочерних элемента и для одновременного вращения и изменения размеров объекта. Данный файл необходимо сохраним в каталоге res/anim/ под любым именем, например, crazycat.xml

crazycat.xml

В файле разметки поместим кнопку для запуска анимации и один элемент ImageView для нашего изображения.

Осталось написать программный код:

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

Независимо оттого, как анимация изменяет размеры объекта или перемещает его на плоскости, границы элемента View, в который загружено изображение, останутся неизменными: ваша анимация не будет автоматически корректировать размеры представления для размещения объекта. Если анимация выйдет за границы родительского представления, произойдет отсечение объекта анимации.

Анимация группы представлений

Анимацию можно сделать и для нескольких представлений, объединив их в группу. Например, поместив представления в контейнер LinearLayout, причем можно использовать не только графические, но и текстовые представления.

Принцип анимаци останется тем же. В файле разметки приложения разместите дочерний контейнер LinearLayout, в котором разместите ImageView с изображением и TextView с надписью. Для дочернего контейнера обязательно присвойте идентификатор, по которому вы сможете загрузить его в код программы и использовать для анимации.

Код класса практически не будет отличаться от предыдущего примера, за исключением того, что мы работаем с анимацией не отдельного представления, а с анимацией группы представлений:

Источник

Android Rotate Animations (Clockwise / Anti Clockwise) with Examples

In android, Rotate animation is used to change the appearance and behavior of the objects over a particular interval of time. The Rotate animation will provide a better look and feel for our applications.

Generally, the animations are useful when we want to notify users about the changes happening in our app, such as new content loaded or new actions available, etc.

To create an animation effect on the objects in our android application, we need to follow the below steps.

Create XML File to Define Animation

We need to create an XML file that defines the type of animation to perform in a new folder anim under res directory (res à anim à rotate.xml) with required properties. In case, if anim folder does not exist in res directory, create a new one.

To use Rotate animation in our android applications, we need to define a new xml file with tag like as shown below.

To Rotate animation in Clockwise, we need to set android :fromDegrees and android :toDegrees property values and these will defines a rotation angles like as shown below.

xml version= «1.0» encoding= «utf-8» ?>
set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» >
rotate android :fromDegrees= «0»
android :toDegrees= «360»
android :pivotX= «50%»
android :pivotY= «50%»
android :duration= «5000»/>
set >

To Rotate animation in Anti Clockwise, we need to set android :fromDegrees and android :toDegrees property values and these will defines a rotation angles like as shown below.

xml version= «1.0» encoding= «utf-8» ?>
set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» >
rotate android :fromDegrees= «360»
android :toDegrees= «0»
android :pivotX= «50%»
android :pivotY= «50%»
android :duration= «5000»/>
set >

Once we are done with creation of required animation XML files, we need to load those animation files using different properties.

Android Load and Start the Animation

In android, we can perform animations by using AnimationUtils component methods such as loadAnimation(). Following is the code snippet of loading and starting an animation using loadAnimation() and startAnimation() methods.

Animation aniRotate = AnimationUtils.loadAnimation(getApplicationContext(),R.anim. rotate_clockwise );
img .startAnimation(aniRotate);

If you observe above code snippet, we are adding an animation to the image using loadAnimation() method. The second parameter in loadAnimation() method is the name of our animation xml file.

Here we used another method startAnimation() to apply the defined animation to imageview object.

Now we will see how to implement rotate animation for imageview on button click in android applications with examples.

Android Rotate Animation Example

Following is the example of implementing rotate animations to rotate images in clockwise or anti-clockwise on button click in android applications.

Create a new android application using android studio and give names as RotateExample. In case if you are not aware of creating an app in android studio check this article Android Hello World App.

Once we create an application, open activity_main.xml file from \res\layout folder path and write the code like as shown below.

activity_main.xml

xml version= «1.0» encoding= «utf-8» ?>
RelativeLayout xmlns: android = «http://schemas.android.com/apk/res/android»
android :layout_width= «match_parent»
android :layout_height= «match_parent»
android :paddingLeft= «10dp»
android :paddingRight= «10dp» >
ImageView android :id= «@+id/imgvw»
android :layout_width= «wrap_content»
android :layout_height= «250dp»
android :src= «@drawable/bangkok»/>
Button
android :id= «@+id/btnRClk»
android :layout_below= «@+id/imgvw»
android :layout_width= «wrap_content»
android :layout_height= «wrap_content»
android :text= «Clockwise» android :layout_marginLeft= «100dp»/>
Button
android :id= «@+id/btnRAClk»
android :layout_width= «wrap_content»
android :layout_height= «wrap_content»
android :layout_alignBottom= «@+id/btnRClk»
android :layout_toRightOf= «@+id/btnRClk»
android :text= «Anti Clockwise»/>
RelativeLayout >

As discussed, we need to create an xml files to define rotate animation either in clockwise or anti clockwise in new folder anim under res directory (res à anim à rotate_clockwise.xml, rotate_anticlockwise.xml) with required properties. In case anim folder not exists in res directory, create a new one.

Following is the example of creating XML files (rotate_clockwise.xml, rotate_anticlockwise.xml) under anim folder to define rotate animation in clockwise and anti-clockwise properties.

Now open rotate_clockwise.xml file and write the code to set rotate animation properties to rotate the object in clockwise like as shown below.

rotate_clockwise.xml

xml version= «1.0» encoding= «utf-8» ?>
set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» >
rotate android :fromDegrees= «0»
android :toDegrees= «360»
android :pivotX= «50%»
android :pivotY= «50%»
android :duration= «5000»/>
set >

Now open rotate_anticlockwise.xml file and write the code to set rotate animation properties to rotate the object in anti-clockwise like as shown below

rotate_anticlockwise.xml

xml version= «1.0» encoding= «utf-8» ?>
set xmlns: android = «http://schemas.android.com/apk/res/android» android :interpolator= «@android:anim/cycle_interpolator» >
rotate android :fromDegrees= «360»
android :toDegrees= «0»
android :pivotX= «50%»
android :pivotY= «50%»
android :duration= «5000»/>
set >

Now open your main activity file MainActivity.java from \java\com.tutlane.rotateexample path and write the code like as shown below

MainActivity.java

package com.tutlane.rotateexample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity <
private Button btnrclock ;
private Button btnrantick ;
private ImageView img ;
@Override
protected void onCreate(Bundle savedInstanceState) <
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );
btnrclock = (Button)findViewById(R.id. btnRClk );
btnrantick = (Button)findViewById(R.id. btnRAClk );
img = (ImageView)findViewById(R.id. imgvw );
btnrclock .setOnClickListener( new View.OnClickListener() <
@Override
public void onClick(View v) <
Animation aniRotateClk = AnimationUtils.loadAnimation(getApplicationContext(),R.anim. rotate_clockwise );
img .startAnimation(aniRotateClk);
>
>);
btnrantick .setOnClickListener( new View.OnClickListener() <
@Override
public void onClick(View v) <
Animation animRotateAclk = AnimationUtils.loadAnimation(getApplicationContext(),R.anim. rotate_anticlockwise );
img .startAnimation(animRotateAclk);
>
>);
>
>

If you observe above code, we are adding an animation to the image using loadAnimation() method used startAnimation() method to apply the defined animation to imageview object.

Output of Android Rotate Animation Example

When we run the above program in the android studio we will get the result as shown below.

If you observe above result, whenever we are clicking on Clockwise or Anti Clockwise buttons, the image will rotate either in clockwise or anti-clockwise based on our functionality.

This is how we can implement rotate animations for imageview in android applications based on our requirements.

Источник

Оцените статью