活动之间的新Android 4.0屏幕转换

Mik*_*ael 2 android android-activity

我已经开发了几个月的Android应用程序,并开始在Android 4.0上进行测试.我只是注意到他们改变了屏幕之间的默认转换并不是在转换时的新幻灯片,而是像iPhone中那样从背景中弹出一些新的.

有没有人有关于过渡的更多信息,它是否可配置?如果是这样,它在API中我似乎无法找到它.

Roy*_*Lee 5

用它来控制android中的屏幕转换: overridePendingTransition

  • 你应该立即打电话给你 startActivity(intent);
  • 覆盖onBackPressed(),startActivity()以及finish()您希望控制的任何活动.
  • 它适用于Android版本> 2.1.

幻灯片放入/缩小动画:

xml在res/anim中创建以下文件:

slide_in_left.xml:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="100%p" android:toXDelta="0"
    android:duration="@android:integer/config_shortAnimTime"/>
Run Code Online (Sandbox Code Playgroud)

slide_in_right.xml:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="-100%p" android:toXDelta="0"
    android:duration="@android:integer/config_shortAnimTime"/>
Run Code Online (Sandbox Code Playgroud)

slide_out_left.xml:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0" android:toXDelta="-100%p"
    android:duration="@android:integer/config_shortAnimTime" />
Run Code Online (Sandbox Code Playgroud)

slide_out_right.xml:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0" android:toXDelta="100%p"
    android:duration="@android:integer/config_shortAnimTime" />
Run Code Online (Sandbox Code Playgroud)

要从A-> B滑动的代码段:

public class A extends Activity {

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);   
}

@Override
public void startActivity(Intent intent) {
    super.startActivity(intent);
    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);   
}

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);   

}


} 
Run Code Online (Sandbox Code Playgroud)
public class B extends Activity {

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left); 
}

@Override
public void startActivity(Intent intent) {
    super.startActivity(intent);
    overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left); 
}

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left); 

}


}
Run Code Online (Sandbox Code Playgroud)