我在安卓中设置了以下动画:
向右滑动
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="@android:integer/config_shortAnimTime"/>
</set>
向右滑出
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p"
android:duration="@android:integer/config_shortAnimTime"/>
</set>
然后,我创建了一个基类来实现动画,我的所有活动都扩展了这个基类,如下所示:
public class BaseActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
slideInTransition();
}
protected void slideInTransition() {
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);
}
}
因此,只要我使用 startActivity(intent) 启动一个新活动,并且如果我按回工具栏(旧操作栏),动画就可以工作。但是,如果按Android的后退按钮,则动画不会发生。我以这种方式使用工具栏:
// get the actionbar as Toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.signIn_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
覆盖活动中的onBackPressed
方法
@Override
public void onBackPressed() {
finish();
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);
}
好吧,操作栏中的"后退"按钮实际上是一个"向上"按钮。使用它可将你带到应用的导航层次结构的更高级别。实际的"后退"按钮会将您带到您上次所在的"位置"。
因此请记住,"向上"按钮将始终将您带到应用程序中的同一位置!而"后退"按钮可能会在每次按下时将您带到不同的地方,甚至到另一个应用程序。
在此处阅读有关此主题的更多信息以更好地理解它:http://developer.android.com/design/patterns/navigation.html