Android 从 child 到 parent 的自定义过渡 Activity
Android custom transition from child to parent Activity
我有 2 个 Activities
。 ActivityA
是 ActivityB
的 parent Activity
:
我的 Manifest
文件:
<activity
android:name=".ActivityA"
android:launchMode="singleTop" />
<activity
android:name=".ActivityB"
android:parentActivityName=".ActivityA"/>
我已将过渡从 ActivityA
更改为 ActivityB
:
final Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);
overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
效果很好。但现在我还想更改从 ActivityB
返回到 ActivityA
时的过渡。在我的 ActivityB
中,我像这样重写方法 finish()
:
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
}
问题是 finish()
方法只在按下硬件返回 Button
时被调用,而不是在 "go back arrow" (屏幕左上角)被按下时调用.
我还想要在按下 Button
时自定义 transition
。
有什么想法吗?
您可以通过以下方式完成:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
}
return super.onOptionsItemSelected(item);
}
我有 2 个 Activities
。 ActivityA
是 ActivityB
的 parent Activity
:
我的 Manifest
文件:
<activity
android:name=".ActivityA"
android:launchMode="singleTop" />
<activity
android:name=".ActivityB"
android:parentActivityName=".ActivityA"/>
我已将过渡从 ActivityA
更改为 ActivityB
:
final Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);
overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
效果很好。但现在我还想更改从 ActivityB
返回到 ActivityA
时的过渡。在我的 ActivityB
中,我像这样重写方法 finish()
:
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
}
问题是 finish()
方法只在按下硬件返回 Button
时被调用,而不是在 "go back arrow" (屏幕左上角)被按下时调用.
我还想要在按下 Button
时自定义 transition
。
有什么想法吗?
您可以通过以下方式完成:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
}
return super.onOptionsItemSelected(item);
}