如何在返回父活动时启动动画

时间:2016-12-10 10:34:53

标签: android android-actionbar android-animation

当我在ActionBar中点击一个图标并且我正在为转换制作动画时,我正在启动一个Activity。 这是代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

    if (id == R.id.action_menu) {
        Intent intent = new Intent(NewsFeedActivity.this, RightHalfMenu.class);
        startActivity(intent);
        overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);
    }

现在,我还想在单击“后退箭头”按钮返回父活动时进行动画处理。 在默认转换中,父活动淡入,我想从右到左为父活动的外观设置动画。

以下是代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if(id == R.id.home){
        NavUtils.navigateUpFromSameTask(this);
        //for putting animation
        overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);

    }
    return super.onOptionsItemSelected(item);
}

在默认转换中,父活动淡入,我想从右到左为父活动的外观设置动画。 我怎么能这样做?

P.S:我已删除此代码

  if(id == R.id.home){
    NavUtils.navigateUpFromSameTask(this);
    //for putting animation
    overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_right);

}

即使再点击它也会转到NewsFeedActivity,因为我已经将NewsFeedActivity声明为AndroidMinifest.xml中RighHalf的父活动。

<activity
    android:name=".activities.RightHalfMenu"
    android:parentActivityName=".activities.NewsFeedActivity">

    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".activities.NewsFeedActivity"/>
    >
</activity>

1 个答案:

答案 0 :(得分:0)

这不能与

一起使用
    NavUtils.navigateUpFromSameTask(this);

方法。您必须通过Intent开始您的ParentActivity,就像您在第一个片段中所做的那样:

    Intent intent = new Intent(RightHalfMenu.this, NewsFeedActivity.class);
    startActivity(intent);
    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);

或使用NavUtils.navigateUpTo()方法和Intent f.e. :

    NavUtils.navigateUpTo(this, new Intent(RightHalfMenu.this, NewsFeedActivity.class));
    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);