11/08/2018, 22:21

Animation in Android

Animation Resources Một animation resource có thể định nghĩa theo 2 kiểu animation sau: Property Animation: Tạo một animation bằng cách thay đổi một giá trị thuộc tính của đối tượng trong một khoảng thời gian xác định với một animatior. (Kiểu như là trong một thời gian xác định nào đó thì ...

Animation Resources

Một animation resource có thể định nghĩa theo 2 kiểu animation sau:

  • Property Animation: Tạo một animation bằng cách thay đổi một giá trị thuộc tính của đối tượng trong một khoảng thời gian xác định với một animatior. (Kiểu như là trong một thời gian xác định nào đó thì đối tượng thực hiện đoạn animation như thế nào đó chẳng hạn) nếu vẫn thấy mông lung thì bạn nên xem ví dụ bên dưới để hiểu hơn.

  • View Animation: Có 2 kiểu animation mà bạn có thể làm với view animation framework:

  • Tween animation: tạo một animation bằng cách vận hành một loạt những sự thay đổi trên một hình ảnh với một Animation.

  • Frame Animation: Hoặc tạo một animation bằng cách hiển thị một chuỗi các hình ảnh với một AnimationDrawable.

Do thời gian có hạn nên trong bài này tôi sẽ chỉ nói tới Property Animation. Còn thành phần còn lại bạn có thể thao khảo thêm ở link tham khảo bên dưới bài viết.

Property Animation

Animation được định nghĩa trong XML cái mà thay đổi thuộc tính của đối tượng đối tượng mục tiêu như là background color hoặc giá trị alpha , qua một khoảng thời gian.

FILE LOCATION:

res/animator/filename.xml

filename sẽ được sử dụng như resource ID. Còn cái res/anim sẽ nói tới sau nhé.

COMPILED RESOURCE DATATYPE:

Resource trỏ tới một ValueAnimator, ObjectAnimator, hoặc AnimatorSet.

RESOURCE REFERENCE:

Trong Java: R.animator.filename Trong XML: @[package:]animator/filename

Syntax:

<set android:ordering=["together" | "sequentially"]>

<objectAnimator android:propertyName="string" android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["repeat" | "reverse"] android:valueType=["intType" | "floatType"]/>

<animator android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["repeat" | "reverse"] android:valueType=["intType" | "floatType"]/>

<set> ... </set> </set>

File phải có một phần tử gốc đơn hoặc <set>, <objectAnimator> hoặc <valueAnimator>. Bạn có thể nhóm các phần tử animation với nhau trong phần tử <set>, thêm các phần tử <set>...

ELEMENTS:

<set>

Một container giữ các phần tử animation khác (<objectAnimator>, <valueAnimator>, or phần tử <set> khác). Tiêu biểu như một AnimatorSet.

Bạn có thể chỉ định các thẻ <set> lồng nhau để nhóm các animation cùng với nhau. Mỗi <set> có thể định nghĩa thuộc tính ordering riêng của mình.

attributes:

android:ordering

Keyword. Chỉ ra thứ tự play của animation trong set này.

Value Description sequentially Play animations theo kiểu tuần tự liên tục together (default) Play animations theo kiểu cùng một lúc. <objectAnimator>

Animates một thuộc tính của 1 đối tượng cụ thể thông qua một khoảng thời gian cụ thể.. Tiêu biểu với ObjectAnimator.

attributes:

android:propertyName

String. Required. Thuộc tính của đối tượng để chạy animation, tham chiếu bởi tên nó. Cho ví dụ bạn có thể chỉ định "alpha" or "backgroundColor" cho một đối tượng View.

Phần tử objectAnimator không thể hiện một thuộc tính target, tuy nhiên, vì vậy bạn không thể cài đặt đối tượng để animate trong khai báo xml. Bạn cần phải inflate tài nguyên resource xml animation của bạn bằng cách gọi loadAnimator() and gọi setTarget() để đặt đối tượng mục tiêu có chưa thuộc tính này.

android:valueTo

float, int, or color. Required. Giá thị thuộc tính lúc animation đã kết thúc. Màu được biểu diễn bởi 6 chữ số (for example, #333333).

android:valueFrom

float, int, or color. Giá trị thuộc tính khi animation bắt đầu. Nếu không chỉ địng, giá trị sẽ được lấy bởi method get của thuộc tính. Giá trị màu như trên.

android:duration

int. Thời gian trong mili giây của animation. 300 millisecons là mặc định.

android:startOffset

int. Khoảng trễ milliseconds của animation sau khi start() được gọi.

android:repeatCount

int. Animation sẽ lặp lại bao nhiêu lần. Set -1 để lặp vô cùng. Ví dụ, value bằng "1" nghĩa là animation sẽ lặp lại 1 lần sau khi khởi tạo chạy animation, vì vậy animation sẽ chạy tổng số 2 lần. Mặc định value là "0", nghĩa là không repeat, chỉ chạy có 1 lần.

android:repeatMode

int. Animation sẽ xử lý lặp lại ra sao khi nó kết thúc animation. android:repeatCountphải được set một số nguyên hay "-1" cho thuộc tính để có effect. Set là "reverse" để có được animation quay ngược trở lại hoặc "repeat" để có animation lặp lại từ đầu mỗi lần.

android:valueType

Keyword. Không chỉ điịnh thuộc tính này nếu giá trị là một color. Animation framework tự động xử lý các giá trị color.

Value Description intType Giá trị animation là integer floatType (default) Chỉ ra giá trị animation là float <animator>

Vận hành một animation thông qua một khoảng thời gian được chỉ định. Tưng ứng với 1 ValueAnimator.

attributes:

android:valueTo

float, int, or color. Required. Giá trị lúc animation kết thúc. Màu thì như ví dụ: #333333.

android:valueFrom

float, int, or color. Required.Giá trị thuộc tính lúc animation kết thúc.

android:duration

int. Thời gian chạy animation, tính bằng millisecon. 300ms is the default.

android:startOffset

int. Khoảng thời gian trễ sau khi start() được gọi.

android:repeatCount

int. Animation sẽ lặp lại bao nhiêu lần. Set -1 để lặp vô cùng. Ví dụ, value bằng "1" nghĩa là animation sẽ lặp lại 1 lần sau khi khởi tạo chạy animation, vì vậy animation sẽ chạy tổng số 2 lần. Mặc định value là "0", nghĩa là không repeat, chỉ chạy có 1 lần.

android:repeatMode

int . Animation sẽ xử lý lặp lại ra sao khi nó kết thúc animation. android:repeatCountphải được set một số nguyên hay "-1" cho thuộc tính để có effect. Set là "reverse" để có được animation quay ngược trở lại hoặc "repeat" để có animation lặp lại từ đầu mỗi lần

android:valueType

Keyword. Không chỉ điịnh thuộc tính này nếu giá trị là một color. Animation framework tự động xử lý các giá trị color.

Value Description intType Specifies that the animated values are integers floatType (default) Specifies that the animated values are floats VÍ DỤ:

XML file saved at res/animator/property_animator.xml:

setandroid:ordering="sequentially"

<set>

    <objectAnimator

        android:propertyName="x"

        android:duration="500"

        android:valueTo="400"

        android:valueType="intType"/>

    <objectAnimator

        android:propertyName="y"

        android:duration="500"

        android:valueTo="300"

        android:valueType="intType"/>

</set>

<objectAnimator

    android:propertyName="alpha"

    android:duration="500"

    android:valueTo="1f"/>
</set> Để chạy animation, bạn phải inflate các tài nguyên XML trong code của bạn tới đối tượng AnimatorSet, và sau đó đặt các đối tượng mục tiêu cho tất cả các animation trước khi bắt đầu đặt animation. Gọi setTarget() đặt một đối tượng đơn cho tắt cả con của AnimatorSet as a convenience. The following code shows how to do this:

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.anim.property_animator); set.setTarget(myObject); set.start(); SEE ALSO:

Property Animation API Demos Cho các ví dụ làm thế nào để sử dụng hệ thống property animation. Để hiểu hơn bạn có thể download source từ địa chỉ sau đây:```LaTeX

  • Project gốc. Đây là địa chỉ trực tiếp mà tôi lấy ví dụ nếu bạn tải project này thì cần config một chút nữa nó mới chạy được. http://source.tutsplus.com/mobile/authors/sue_smith/creating_a_simple_property_animation_source (1).zip

  • Project android studio: Đây là project tôi lấy từ project gốc tìm hiểu và chỉnh sửa. Chạy phát ngon luôn. https://drive.google.com/file/d/0B7td9WR1ZtQ0S2dMbXhCdnpTaUE/view?usp=sharing

Password giải nén là: framgia

Website references:

  • http://developer.android.com/
  • http://code.tutsplus.com/
0