首先在 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:
MainActivity:
- <?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>
- 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
沒有留言:
張貼留言