Dùng Object Animator để tạo hiệu ứng

Bài viết này hướng dẫn các bạn cách tạo hiệu ứng bằng file XML sau đó điều khiển bằng code java. Bạn nên tạo mới project để thực hành.

Bước 1: Tạo project có 1 textview và 1 nút bấm

Code Textview:

<TextView android:id="@+id/tv01" 
android:layout_width="wrap_content" android:layout_height="wrap_content" 
android:text="Hello!" 
android:textSize="40dp" 
android:background="#FF9800"/>

Code Button:

<Button android:id="@+id/btn01"
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content"
 android:text="start" />

Bạn tự trình bày làm sao cho 2 cái textview và button nằm cách xa nhau 1 chút. Trong Activity bạn khai báo biến, thực hiện ánh xạ các view và set sự kiện onClick cho nút bấm

 

public class MainActivity extends AppCompatActivity {

    TextView tv01;
    Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv01 = findViewById(R.id.tv01);
        btn1 = findViewById(R.id.btn01);
 

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              // chỗ này để viết code load hiệu ứng khi người dùng bấm nút
             
            }
        });
    }
}

 

Bước 2: Phân tích logic hiệu ứng

Chúng ta sẽ cần 2 hiệu ứng để di chuyển TextView: 1 là hiệu ứng di chuyển sang phải, 2 là hiệu ứng di chuyển xuống dưới.

Bước 3: Tạo thư mục tên là animator trong thư mục /res của ứng dụng để tạo file hiệu ứng

Kích phải chuột lên thư mục res/ chọn new –> Directory –> nhập tên là animator sau đó Enter

Kích phải chuột lên thư mục animator –> chọn New –> Animator Resource File –> nhập tên là:  hieu_ung01  và bấm Enter (các lựa chọn khác để mặc định)

Kết quả là có file hieu_ung01.xml trong đó.

Nếu bạn nào không nhìn thấy thư mục animator thì chuyển chế độ view Project về dạng Project thay vì android

 

Soạn nội dung cho file hieu_ung01.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
   <objectAnimator
       android:propertyName="y"
       android:valueTo="1000"
       android:duration="3000"/>
  
</set>

Bước 4: Vào sự kiện OnClick của nút bấm để load hiệu ứng

AnimatorSet animatorSet = (AnimatorSet) AnimatorInflater.loadAnimator(MainActivity.this,R.animator.hieu_ung01);
animatorSet.setTarget(tv01);
animatorSet.start();

Bước 5: Chạy và bấm nút để xem hiệu ứng.

Sau khi chạy hãy thay đổi thứ tự code của objectAnimator trong file xml và chạy lại để xem hiệu ứng thay đổi thế nào