首先在 res/ 建立一個 anim 資料夾 (一定要用 anim 命名)
並且在裡面依照想要的轉場效果,建立對應的 xml
由右滑入 slide_in_right.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%" android:toXDelta="0" android:duration="200" /> </set>
向右滑出 slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%" android:duration="200" /> </set>
如果想要其他特效,在這篇文章最後面會寫。
在 res/layout 建立一個 xml 給第二個 activity 用
在 res/layout 建立一個 xml 給第二個 activity 用
activity_second.xml:
然後在 java 資料夾裡面加入第二個 activity.java
SecondActivity.java:
其中在這行可以選擇切換時想要的轉場特效
overridePendingTransition(R.anim.slide_in_right, R.anim.none);
在主要的 main activity 裡設定一個按鈕按下去切換到第二個 Activity
activity_main.xml:
最後記得在 AndroidManifest.xml 裡面註冊第二個 Activity
附上其他的轉場效果 xml 的寫法
無效果 none.xml
淡入 fade_in.xml
淡出 fade_out.xml
由下滑入 slide_in_bottom.xml
由左滑入 slide_in_left.xml
由右滑入 slide_in_right.xml
由上滑入 slide_in_top.xml
由上滑入淡入 slide_in_top_fade.xml
向下滑出 slide_out_bottom.xml
向左滑出 slide_out_left.xml
向右滑出 slide_out_right.xml
向上滑出 slide_out_top.xml
向上滑出淡出 slide_out_top_fade.xml
END
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:text="Second Activity" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/id_btn01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:text="Back" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" android:onClick="onClickGoActivityFromSecond"/> </android.support.constraint.ConstraintLayout>
然後在 java 資料夾裡面加入第二個 activity.java
SecondActivity.java:
public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } public void onClickGoActivityFromSecond(View v){ finish(); overridePendingTransition(R.anim.none, R.anim.slide_out_right); } }
其中在這行可以選擇切換時想要的轉場特效
overridePendingTransition(R.anim.slide_in_right, R.anim.none);
在主要的 main activity 裡設定一個按鈕按下去切換到第二個 Activity
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.chris.myapplication.MainActivity"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:text="MainActivity" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/id_btn01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:text="Go Second" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" android:onClick="onClickGoActivityFromMain"/> </android.support.constraint.ConstraintLayout>MainActivity:
public class MainActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClickGoActivityFromMain(View v){ startActivity(new Intent(this, SecondActivity.class)); overridePendingTransition(R.anim.slide_in_right, R.anim.none); } }
最後記得在 AndroidManifest.xml 裡面註冊第二個 Activity
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.chris.myapplication"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity" android:screenOrientation="portrait"> </activity> </application> </manifest>
附上其他的轉場效果 xml 的寫法
無效果 none.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0" android:toYDelta="0%" android:duration="300" /> </set>
淡入 fade_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> </set>
淡出 fade_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" /> </set>
由下滑入 slide_in_bottom.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="100%" android:toYDelta="0" android:duration="300" /> </set>
由左滑入 slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%" android:toXDelta="0" android:duration="200" /> </set>
由右滑入 slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%" android:toXDelta="0" android:duration="200" /> </set>
由上滑入 slide_in_top.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="-100%" android:toYDelta="0" android:duration="300" /> </set>
由上滑入淡入 slide_in_top_fade.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="-100%" android:toYDelta="0" android:duration="500" /> <alpha android:fromAlpha="0" android:toAlpha="1.0" android:duration="250" android:repeatMode="reverse" android:startOffset="0" /> </set>
向下滑出 slide_out_bottom.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0" android:toYDelta="-100%" android:duration="300" /> </set>
向左滑出 slide_out_left.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%" android:duration="200" /> </set>
向右滑出 slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%" android:duration="200" /> </set>
向上滑出 slide_out_top.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0" android:toYDelta="100%" android:duration="300" /> </set>
向上滑出淡出 slide_out_top_fade.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0" android:toYDelta="100%" android:duration="650" /> <alpha android:fromAlpha="1.0" android:toAlpha="0" android:duration="500" android:repeatCount="1" android:repeatMode="reverse" android:startOffset="0" /> </set>
END
沒有留言:
張貼留言