12/08/2018, 13:15

Một số Animation trong Android

Để cho một ứng dụng có thể trở lên sinh động hơn với các hiệu ứng nhấp nháy, di chuyển trái phải, lên xuống hoặc thoắt ẩn thoắt hiện cho các dòng text, hay cho các hình ảnh, nút bấm, vv... chúng ta có thể sử dụng Animation cho cái thành phần đó. Chỉ cần sử dụng thêm một chút các animation đơn giản, ...

Để cho một ứng dụng có thể trở lên sinh động hơn với các hiệu ứng nhấp nháy, di chuyển trái phải, lên xuống hoặc thoắt ẩn thoắt hiện cho các dòng text, hay cho các hình ảnh, nút bấm, vv... chúng ta có thể sử dụng Animation cho cái thành phần đó. Chỉ cần sử dụng thêm một chút các animation đơn giản, chúng ta đã có thể làm cho ứng dụng trở lên hay ho hơn, động đậy hơn, chứ không phải là các dòng chữ, nút bấm, hình ảnh đơn điệu. Có 2 cách đơn giản để tạo ra một animation cho các thành phần view đó là sử dụng các funtion có sẵn của lớp Animation để tạo ra một hành động mong muốn hay ta có tạo một file xml, khai báo những thành phần cụ thể của một animation nào đó rồi load nó lên view mong muốn. Sau đây mình xin giới thiệu những animation cơ bản nhất.

Đối với việc sử dụng các lớp có sẵn, ta có thể tạo một animation chuyển động sang trái, phải với lớp TranslateAnimation , cùng đó là khai báo các thành phần mong muốn như thời gian setDuration(), chế độ lặp setRepeatMode(), setRepeatCount(), ..

Di chuyển lên với thời gian 5s

    TranslateAnimation translateYAnimation = new TranslateAnimation(0f, 0f, 0f, -2200f);
    translateYAnimation.setDuration(5000l);
    translateYAnimation.setRepeatCount(Animation.INFINITE);
    translateYAnimation.setRepeatMode(Animation.REVERSE);

Di chuyển sang phải

    TranslateAnimation translateXAnimation = new TranslateAnimation(0f, 1000f, 0f, 0f);
    translateXAnimation.setDuration(2000l);
    translateXAnimation.setRepeatMode(Animation.RESTART);
    translateXAnimation.setRepeatCount(Animation.INFINITE);

Còn đối với việc sử dụng file xml, ta cần phải khởi tạo một file xml và khai báo các thành phần cần thiết cho một animation mong muốn (cách này đơn giản nhẹ nhàng :v)

Dưới đây là một khai báo cho một animation nhấp nháy liên tục với thời gian là 350ms

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="350"
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:fillBefore="true"
        android:fillAfter="true"
        android:repeatMode="reverse"
        android:repeatCount="infinite"/>
</set>

hoặc một animation tự quay quanh bản thân 360 độ rồi lại quay quay tiếp

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:fillEnabled="true">

    <rotate
        android:duration="1000"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="360"
        android:repeatMode="restart"
        android:repeatCount="infinite"/>

</set>

cũng có thể là một amintion phóng to thu nhỏ nhấp nhô

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
    <scale
        android:interpolator="@android:anim/bounce_interpolator"
        android:fromXScale="0.0"
        android:toXScale="1.0"
        android:fromYScale="0.0"
        android:toYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="true"
        android:fillBefore="true"
        android:duration="500"
        android:repeatMode="restart"
        android:repeatCount="infinite"
        />
</set>

và để thực hiện các animation đã tạo ra như trên trong file xml thì ta chỉ đơn giản là load nó lên và sử dụng thôi

    Animation animationRotale = AnimationUtils.loadAnimation(this, R.anim.rotate);
    imageViewRotate.startAnimation(animationRotale);

Và sau đây là hình ảnh của một demo đơn giản áp dụng các animation cơ bản được nhắc đến phía trên

ezgif.com-video-to-gif.gif

0