Android анимация трансформации

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

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

  • AnimationSet (елемент ) - клас, който представлява група от анимации, които трябва да работят заедно. Ако AnimationSet клас определя всички свойства, тези свойства са наследени и обекти, принадлежащи към групата;
  • AlphaAnimation (елемент ) - Контрол на прозрачността на обекта;
  • RotateAnimation (елемент ) - контролира въртенето на обекта;
  • ScaleAnimation (елемент ) - контролира мащабирането на обекта, т.е. промени в размерите;
  • TranslateAnimation (елемент ) - контролира позиционирането на обекта (преместване)

екип от аниматори определя преобразуването трябва да се извършва на обекта. Трансформации могат да бъдат последователни или едновременни. Всяка трансформация се параметър набор дефинирани за това превръщане (първоначален размер, когато крайния размер е оразмерен, изходният ъгъл и завършва ъгъла на завъртане на обекта и т. Г.) и набор от общи параметри (например, начален час и продължителност). Ако искате да направите няколко промени в същото време, те се зададе същия начален час. Ако искате да направите последователни трансформации, даден от техния начален час плюс срока на действие на предишния преобразуването.

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

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

XML-файлове анимации разполагат в RES / Аним / директория на вашия проект. Файлът трябва да има една главна елемент: това ще бъде някой от елементите , , , или елемент , който е контейнер за тези четири компонента (и може да включва друг контейнер ).

По подразбиране всички елементи се прилагат едновременно. За да стартира елементи последователно, е необходимо да се определи и уточни startOffset стойност на атрибут в милисекунди, като например:

анимационни атрибути

В елементи , , , и подкрепени по общи характеристики, наследени от Animation базовия клас:

  • продължителност - продължителността на ефекта в милисекунди;
  • startOffset - първоначалния компенсира време за тази цел, в милисекунди;
  • fillBefore - когато е зададено вярно. анимация трансформация се прилага преди започване на анимация;
  • fillAfter - когато е зададено вярно. трансформиращите се прилага след края на анимацията;
  • repeatCount - определя броя на повторенията на анимация може да се използва безкрайност стойност (безкрайност);
  • repeatMode - определя поведението на анимацията, когато е завършена. Възможни варианти: рестартиране (изчисти непроменен) или обратно (промяна на анимацията в обратна посока);
  • zAdjustment - определя ос Z режим поръчка за употреба при извършване на анимация (нормална, горната или долната част);
  • интерполатор - определя с постоянна скорост, която описва динамиката на визуална активност в зависимост от време или, по прост начин, определя скоростта на промяната на анимация. Може да се използва който и да е от елементите на подклас на интерполатор определено в R.styleable, например: андроид: интерполатор = "@ андроид: Anim / decelerate_interpolator"

елемент

елемент - контейнер, който може да съдържа други елементи. Това е AnimationSet клас. Поддържа shareInterpolator атрибут. които, когато истинската стойност показва възможността за споделяне на този интерполатор за всички дъщерни елементи.

елемент

Постепенно се променя прозрачността на анимацията използване AlphaAnimation. Той поддържа следните характеристики:

  • fromAlpha - първоначалната стойност на прозрачността на обекта;
  • toAlpha - крайната стойност на прозрачността на обекта;

Атрибути включват стойност прозрачност между тип 0 и 1 поплавък, където 0 означава пълна прозрачност на обекта.

елемент

елемент контроли анимация преоразмеряват обекта и е ScaleAnimation клас. Можете да определите точката на изображението (картинката, за да се определи центъра на анимацията), за които обектът ще се промени мащабирането център. елемент Той поддържа следните характеристики:

  • fromxScale - начална мащаб чрез X. Валидни стойности са от 0 до 1 тип поплавък;
  • toxScale - окончателно мащаб на Х. диапазон е от 0 до 1 тип поплавък;
  • fromYScale - начална скала от Y. Валидни стойности са от 0 до 1 тип поплавък;
  • toYScale - окончателно мащаб на Y. Обхватът е от 0 до 1 тип поплавък;
  • pivotX - X-координата на центъра фиксиран. Той описва точката на мащабирането процент от ширината от 0% до 100% център;
  • pivotY - Y-координата на определен център. Той описва точката на мащабирането процент от височината на 0% до 100% център;

елемент

елемент Той създава вертикално или хоризонтално Tween движение. Това е TranslateAnimation клас и поддържа следните признаци:

  • fromXDelta - начална позиция на X;
  • toXDelta - крайна позиция в X;
  • fromYDelta - начална позиция с Y;
  • toYDelta - крайна позиция в Y

Атрибути трябва да бъдат в една от следните три формати:

  • абсолютна стойност
  • Процентните стойности от 100% до 100%
  • Процентните стойности от -100 до 100% р% р, където р показва процент спрямо неговата майка.

Например, за слайдшоу ефект, когато един елемент избутва съвсем друг елемент, се осъществява от две анимации отдясно-наляво или надясно-надясно

елемент

елемент за въртене анимация е RotateAnimation клас. Той поддържа следните характеристики:

  • fromDegrees - първоначален ъгъл на въртене в градуси;
  • toDegrees - въртене край ъгъл в градуси;
  • pivotX - X координата на въртене център пиксел;
  • pivotY - Y координата на въртене център пиксел;

Примери за анимация трансформации

Можете да създадете няколко анимационни файлове и да ги използвате за един и същ обект. Вземем примера на анимацията работа правоъгълник. За съжаление, аз не съм спечелил примера на промяната в прозрачността (алфа), може да имате по-добър късмет. (Тъй като един от читателите, пример за движение на емулатора 2.1 и 2.3.3 на емулатора повече).

Създаване на нов проект в директорията RES / Аним / проект за създаване на пет файлове с XML-анимация: alpha.xml, rotate.xml, scale.xml, translate.xml и combination.xml файл, който ще се използва комбинация от различни предмети, за да се създаде смесен анимация.

rotate.xml

translate.xml

combination.xml

правоъгълник форма за анимацията е определен в shape.xml файл, който ще се намира в директория RES / изтегляемото /.

Ние пристъпи към основните форми оформление на приложения (main.xml). Сложете ImageView елемент:

Анимация работи в кода, както следва: необходимо е да се създаде Анимация обект, като метод AnimationUtils.loadAnimation () вика и да го мине като параметър на дейността на контекста и връзката към анимациите на XML-файлове. След това стартирайте анимацията чрез View.startAnimation () метод, преминавайки в анимацията на обект:

AnimationListener

Класът на анимацията е инвестирала AnimationListener интерфейс. AnimationListener интерфейс ви позволява да създавате манипулатор събитие, което се задейства в началото или в края на анимацията. С него можете да изпълнявате всяка операция преди (или след) анимацията да довърши работата си. Това може да е промяна в съдържанието на подаването или сериен показват няколко анимации.

В AnimationListener интерфейс има три метода за обратно повикване:

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

Тези методи могат да бъдат изпълнени обработка код на събитието спусъка, в края на анимацията и рестартирайте. Така например, в края на анимацията, можете да направите един обект невидим анимация и да започнете отново на екрана на дисплея:

setAnimationListener () метод на обекта Анимация повикване и преминава като AnimationListener интерфейс изпълнение параметър, ако е необходимо методи първостепенни onAnimationEnd (), onAnimationStart () и onAnimationRepeat ().

По принцип, на класа ще създаде меню от пет елемента, съответстващи на всеки тип синхронизирани анимации: Alpha, Scale, Превод, Завъртане и комбинация. Като идентификатор на менюто с помощта на идентификатори на XML файл анимация на ресурсите, като по този начин опростяване на структурата на метода onOptionsitemSeiected (), наречен когато е избрана опцията в менюто.

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

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

XML-файлове анимации ще създаде следната структура: използване на елементи разтегне изображението и под-контейнер , където дефинираме две деца елементи и за едновременно завъртане и промяна на размера на обекта. Този файл трябва да бъде записан в RES / Аним / директория под всяко име, например, crazycat.xml

crazycat.xml

Файлът за маркиране, за да поставите един бутон, за да стартирате анимацията и един ImageView елемент в нашия имидж.

Остава да се напише код:

Натискането на котка снимка е първата постепенно разширява хоризонтално, след това едновременно се върти и с намален размер, а след това се връща в първоначалното си състояние.

Android анимация трансформации

Без значение колко анимацията променя размера на обекта или да го преместите в равнината, Виж Вземете границата на елемент зареден с изображението ще остане същата: анимацията няма автоматично да регулирате размера на представяне на имота. Ако анимацията излиза извън границите на мнение, родител, ще има стреляйки обект анимация.

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

Анимациите могат да бъдат направени за няколко представления, комбинирането им в група. Така например, поставяне на контейнер за представителство LinearLayout, като е възможно да се използва не само изображението, но представянето на текст.

принцип анимация остава същата. маркиране Документите за кандидатстване, поставете LinearLayout на дете контейнер, в който се помещава ImageView джаджа със снимка и текстово поле с TextView надпис. не забравяйте да зададете идентификатор за детето на контейнера, който можете да го заредите в кода на програмата и се използва за анимацията.

Клас кодекс ще бъде малко по-различен от предишния пример, освен, че работим с анимацията не отделни презентации и анимации представяне на групата: