Sunteți pe pagina 1din 3

Tema 6 - Animații

Interfeţele grafice pentru aplicaţiile mobile s-au dezvoltat într-un ritm alert, permiţând folosirea
unor elemente avansate de grafică cum sunt umbrele, efectele de transluciditate, animaţiile sau utilizarea
bibliotecii OpenGL.
Animația este procesul de creare a mișcării și a schimbării formei. În Android, animația este
posibilă din mai multe moduri și anume:
 Animaţiile Tweened oferă o modalitate simplă de a oferi adâncime, mişcare sau feedback
utilizatorilor la un cost minim de resurse. Utilizarea de animaţii pentru a aplica un set de schimbări în
privinţa orientării, scalării, poziţionării şi opacizării resurselor este mai puţin costisitoare decât
redesenarea manuală a spaţiului de lucru pentru a obţine efecte similare. Animaţiile Tweened sunt
adesea folosite pentru:
 Tranziţia dintre activităţi
 Tranziţia între aspectele unei activităţi
 Tranziţia dintre diferite părţi ale conţinutului afişat în acelaşi ecran
 Oferirea unui feedback vizual utilizatorului (ex. o clepsidră care se roteşte indicând progresul
unei acţiuni).
Crearea de animaţii Tweened
Animaţiile Tweened sunt create utilizându-se clasa Animation din pachetul android.view
.animation. Următoarea listă oferă o imagine asupra tipurilor de animaţii disponibile:
 AlphaAnimition permite animarea unei schimbări în perspectiva vizuală în ceea ce priveşte
transparenţa;
 RotateAnimation permite rotirea elementului de vizualizare selectat în planul XY;
 ScaleAnimation oferă posibilitatea măririi sau micşorării obiectului selectat;
 TranslateAnimation se utilizează pentru mutarea elementului selectat pe suprafaţa ecranului.
Clasa AnimationListener permite crearea unei rutine de tratare a unui eveniment, care este
declanşat atunci când o animaţie începe sau se termină. Acest lucru se poate realiza apelând metoda
setAnimationListener pe obiectul Animation şi plasarea unei implementări pentru interfaţa
AnimationListener, suprascriind metodele onAnimationEnd, onAnimationStart şi onAnimation Repeat
după necesităţi. Totodată poate fi precizat modul cum o animaţie variază în timp prin intermediul unui
obiect de tip Interpolator. Acest lucru permite ca efectele de animaţie (transparenţă, scalare, translare,
rotaţie) să fie accelerate, încetinite sau repetate.
Animația Tween ia o serie de parametri, cum ar fi valoarea de pornire, valoarea finală, mărimea,
durata de timp și de rotație, unghi, etc., și efectuează animația necesară cu privire la acest obiect. Aceasta
poate fi aplicată oricărui tip de obiect.
Așadar, trebuie să creați un nou director numit anim în directorul res/ și să creați un fișier .xml
sub directorul de animație. Această clasă de animație are multe funcții utile, care sunt enumerate mai jos:

Nr. Metodă și descriere

start()
1
Această metodă inițiază animația.

setDuration (long duration)


2
Această metodă stabilește durata unei animații.

getDuration()
3
Această metodă devine durata care este stabilită prin metoda de mai sus
end()
4
Această metodă încheie animația.

cancel()
5
Această metodă anulează animația.

Pentru a aplica această animație unui obiect, vom apela metoda startAnimation() a
obiectului. Sintaxa sa este:

ImageView image1 = (ImageView)findViewById(R.id.imageView1);


image.startAnimation(animation);

 Animațiile Switcher. Uneori nu dorim ca o imagine să apară brusc pe ecran, mai degrabă dorim să
aplicăm un fel de animație imaginii când aceasta trece de la o imagine la alta. Acest lucru este susținut
de Android, sub formă de ImageSwitcher.
Animația Switcher comută doar între două imagini din aceeaşi fereastră, dintre care, la un moment
dat este prezentată doar una, ele fiind arătate pe rând.

Un ImageSwitcher vă permite să adăugați unele tranziții pe imagini, așa cum apar pe ecran. Pentru a
utiliza imaginea Switcher, trebuie să definiți mai întâi componenta XML. Sintaxa sa este:

<ImageSwitcher
android:id="@+id/imageSwitcher1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
</ImageSwitcher>

Acum vom crea o instanță a ImageSwithcer în fișierul .java și vom obține o referință a acestei
componente XML. Sintaxa sa este:

private ImageSwitcher imageSwitcher;


imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher1);

Următorul lucru pe care trebuie să-l implementăm este interfața ViewFactory și implementarea
metodei neimplementate care returnează o ImageView. Sintaxa sa este:

imageSwitcher.setImageResource(R.drawable.ic_launcher);
imageSwitcher.setFactory(new ViewFactory() {
public View makeView() {
ImageView myView = new ImageView(getApplicationContext());
return myView;
}}

Ultimul lucru pe care trebuie să-l faceți este să adăugați Animație în ImageSwitcher. Trebuie să
definiți un obiect al clasei de animație prin clasa AnimationUtilities apelând o metodă statică
loadAnimation. Sintaxa sa este:
Animation in = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left);
imageSwitcher.setInAnimation(in);
imageSwitcher.setOutAnimation(out);
Metoda setInAnimaton stabilește animația aspectului obiectului pe ecran, în timp ce
setOutAnimation face opusul. Metoda loadAnimation() creează un obiect de animație.
În afară de aceste metode, există și alte metode definite în clasa ImageSwitcher. Acestea sunt
definite mai jos:

Nr. Metodă și descriere

setImageDrawable (Drawable drawable)


1
Setează o imagine cu comutatorul de imagini. Imaginea este transmisă sub formă de bitmap

setImageResource (int resid)


2 Setează o imagine cu comutatorul de imagini. Imaginea este transmisă sub forma unui id de tip
integer

setImageURI (Uri uri)


3
Setează o imagine cu comutatorul de imagini. Imaginea este transmisă sub formă de URI

ImageSwitcher (Context context, AttributeSet attrs)


4 Returnează un obiect de comutare a imaginilor cu deja setarea unor atribute transmise în
metodă

onInitializeAccessibilityEvent (eveniment AccessibilityEvent)


5 Inițializează un AccessibilityEvent cu informații despre această vizualizare care este sursa
evenimentului

onInitializeAccessibilityNodeInfo (info AccessibilityNodeInfo)


6
Inițializează un AccessibilityNodeInfo cu informații despre această vizualizare

 O animație de tip Frame by Frame afișează secvențe de imagini, una după alta, într-un interval de
timp stabilit de noi.

S-ar putea să vă placă și