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 phương pháp chuyển tiếp giữa các activity không ? Hoặc ý muốn việc chuyến qua đó giống 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 cần sử dụng mình sẽ nói ở mục 3

*

2.1. Sự chuyển tiếp giữa giữa những activity kiểu như IOS

Mục 2.1.1 với 2.1.2 là 2 tệp tin xml sinh sản 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 lúc back lại ( xóa 1 activity đi )

Chú ý :

interpolator : định nghĩa đường cong gia tốc (ví dụ tuyến tính, giảm tốc, vv).duration : xác minh thời gian kéo dãn 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 folder anim

2.1.2. File slide_out_to_left.xml

Tạo tệp tin slide_out_to_left.xml trong folder anim trong folder anim

2.1.3. File slide_in_from_left.xml

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

2.1.4. File slide_out_to_right.xml

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

Kết quả

*

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

Mình xài 2 tệp tin xml tất cả sẵn trong app 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 đang xem: Hiệu ứng chuyển trang cho android

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

3. Bí quyết dùng

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

3.1. MainActivity

Mình chế tạo 3 nút cùng với 3 thiết lập cấu hình khác nhau

buttonSlide : tạo nên hiệu ứng giống như IOSbuttonFade : tạo hiệu ứng ẩn hiện tại activity mớibuttonDefault : giữ nguyên hiệu ứng mặc định của điện thoại cảm ứng thông minh để so sánh

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

Mình cũng sản xuất intent để truyền type hiệu ứng gửi tiếp màn hình hiển thị để thời gian back về đem hiệu ứng tương ứng

package com.tuananh.transitionactivity;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;public class MainActivity extends AppCompatActivity implements View.OnClickListener

Xem thêm: Đi Grabtaxi Như Thế Nào - Cách Gọi Grabtaxi Trực Tuyến

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 để mang type tương ứng

type = 1 : hiệu ứng như là IOStype = 2 : hiệu ứng ẩn hiệntype = 0 : khoác đị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