Hiệu ứng chuyển trang cho android

1. Giới thiệu

Có lúc nào bạn quá buồn rầu với giải pháp chuyển tiếp giữa các activity không ? Hoặc muốn việc sự chuyển tiếp giữa đó y như IOS chẳng hạn ?Bài viết này bản thân sẽ trả lời mọi bạn cách "Custom Transition Activity"

2. Custom Transition ActivityCách dùng mình vẫn nói làm việc mục 3

*

2.1. Chuyến qua giữa các activity kiểu như IOS

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

Chú ý :

interpolator : quan niệm đường cong tốc độ (ví dụ con đường tính, giảm tốc, vv).duration : xác minh thời gian kéo dài cuả hiệu ứngfromXDelta, fromYDelta, toXDelta, toYDelta vị trí bắt đầu và kết thúc

2.1.1. File slide_in_from_right.xml

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

2.1.2. Tệp tin slide_out_to_left.xml

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

2.1.3. File slide_in_from_left.xml

Tạo file slide_in_from_left.xml trong folder anim trong folder anim

2.1.4. File slide_out_to_right.xml

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

Kết quả

*

2.2. Hiệu ứng ẩn hiện

Mình xài 2 tệp tin xml có sẵn trong apk là android.R.anim.fade_in cùng 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. Giải pháp dùng

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

3.1. MainActivity

Mình sinh sản 3 nút cùng với 3 thiết lập khác nhau

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

Chú ý : phải kê overridePendingTransition() sau startActivity() nhé

Mình cũng tạo intent để truyền type hiệu ứng chuyển tiếp màn hình để thời điểm back về rước 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:

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 trường đoản cú MainActivity để lấy type tương ứng

type = 1 : hiệu ứng giống 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