HIỆU ỨNG CHUYỂN TRANG CHO ANDROID

1. Giới thiệu

Có khi nào bạn quá chán nản với biện pháp chuyển tiếp giữa các activity không ? Hoặc ao ước việc chuyến qua đó y hệt như IOS chẳng hạn ?Bài viết này mình sẽ trả lời mọi người cách "Custom Transition Activity"

2. Custom Transition ActivityCách dùng mình sẽ nói sinh sống mục 3


Bạn đang xem: Hiệu ứng chuyển trang cho android

*

2.1. Chuyển tiếp giữa các activity giống như IOS

Mục 2.1.1 và 2.1.2 là 2 file xml sản xuất hiệu ứng khi thêm 1 activity mớiMục 2.1.3 với 2.1.4 là 2 tệp tin xml tạo ra hiệu ứng khi back lại ( xóa 1 activity đi )

Chú ý :

interpolator : định nghĩa đường cong tốc độ (ví dụ tuyến đường tính, bớt tốc, vv).duration : khẳng định thời gian kéo dãn dài cuả hiệu ứngfromXDelta, fromYDelta, toXDelta, toYDelta vị trí bước đầu và kết thúc

2.1.1. Tệp tin slide_in_from_right.xml

Tạo tệp tin xml slide_in_from_right.xml trong thư mục anim

2.1.2. File slide_out_to_left.xml

Tạo tệp tin slide_out_to_left.xml trong thư mục anim trong folder anim

2.1.3. Tệp tin slide_in_from_left.xml

Tạo file slide_in_from_left.xml trong thư mục anim trong thư mục anim

2.1.4. Tệp tin slide_out_to_right.xml

Tạo file slide_out_to_right.xml trong thư mục anim trong folder anim

Kết quả

Xem thêm: Những Câu Nói Hay Về Trường Học Trò Khiến Bạn Thổn Thức, Những Câu Nói Hay Về Tuổi Học Trò

*

2.2. Cảm giác ẩn hiện

Mình xài 2 tệp tin xml có sẵn trong android là android.R.anim.fade_in với android.R.anim.fade_out

fade_in.xml

fade_out.xml

alpha xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="Bạn sẽ xem: Hiệu ứng chuyển trang đến android

interpolator/accelerate_quad" android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="android:integer/config_mediumAnimTime" />
*

3. Giải pháp dùng

Chúng ta sẽ sử dụng function overridePendingTransition() để biến đổi hiệu ứng chuyển tiếp màn hình

3.1. MainActivity

Mình tạo 3 nút với 3 thiết lập khác nhau

buttonSlide : sản xuất hiệu ứng như thể IOSbuttonFade : chế tạo ra hiệu ứng ẩn hiện activity mớibuttonDefault : không thay đổi hiệu ứng mang định của điện thoại để so sánh

Chú ý : phải đặt overridePendingTransition() sau startActivity() nhé

Mình cũng tạo thành intent để truyền type hiệu ứng đưa tiếp screen để dịp back về mang hiệu ứng tương ứng

Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button_slide).setOnClickListener(this); findViewById(R.id.button_fade).setOnClickListener(this); findViewById(R.id.button_default).setOnClickListener(this); Override public void onClick(View view) Intent intent = new Intent(this, ImageActivity.class); switch (view.getId()) case R.id.button_slide: intent.putExtra("type", 1); startActivity(intent); overridePendingTransition(R.anim.slide_in_from_right, R.anim.slide_out_to_left); break; case R.id.button_fade: intent.putExtra("type", 2); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); break; default: startActivity(intent); break; }

3.2. ImageActivity

Nhận intent từ bỏ MainActivity để lấy type tương ứngtype = 1 : hiệu ứng như thể IOStype = 2 : cảm giác ẩn hiệntype = 0 : mang định của năng lượng điện thoại

package com.tuananh.transitionactivity;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;public class ImageActivity extends AppCompatActivity private int mType; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_image); if (getIntent() != null) mType = getIntent().getIntExtra("type", 0); Override public void onBackPressed() super.onBackPressed(); switch (mType) case 1: overridePendingTransition(R.anim.slide_in_from_left, R.anim.slide_out_to_right); break; case 2: overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); break; default: break; ResourceResource