简体   繁体   English

Android中的自定义活动过渡动画

[英]custom activity transition animation in Android

The current flow of my app is Activity A -> Activity B ->Fragment BI am trying to implement Activity transition animation. 我的应用程序的当前流程是活动A - >活动B - >片段BI尝试实现活动过渡动画。 I have read many posts on SO mentioning about using overridependingtransition() and I have implemented almost everything mentioned in these posts. 我已经阅读了许多关于使用overridependingtransition()的帖子,我已经实现了这些帖子中提到的几乎所有内容。 Somehow the animation is not working. 不知何故,动画无效。

I need this to work on Android 2.2 ie sdkversion 8 我需要这个在Android 2.2上工作,即sdkversion 8

This is the code: 这是代码:

Activity A 
oncreate method

Intent detailIntent = new Intent(this, WordDetailActivity.class);
            detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            detailIntent.putExtra(DbAdapter.KEY_ROWID, id);
                startActivity(detailIntent);
                overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);


 @Override
    protected void onPause() {
        super.onPause();
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    }


Activity B

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
    }

It would be great if someone could also suggest me any alternative way to implement activity transitions upto android 2.2 如果有人也可以建议我使用任何替代方法来实现Android 2.2的活动转换,那将是很棒的

Phones that have their animation disabled in the phone settings wont show the activity transition animations... so don't count on it. 在手机设置中禁用其动画的手机不会显示活动过渡动画...所以不要指望它。

Also, you can't change these users settings. 此外,您无法更改这些用户设置。

Instead of doing it onPause() do in onResume() 而不是onPause()onResume()

@Override
public void onResume() {
    super.onResume();
    overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}

and try using `minSdk="5" 并尝试使用`minSdk =“5”

EDIT 编辑

Try like this 试试这样吧

Activity_A.this.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

Activity_B.this.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

EDIT 2 编辑2

@Override
public void overridePendingTransition(int enterAnim, int exitAnim) {
    super.overridePendingTransition(enterAnim, exitAnim);
    Log.d(LOG_TAG, "In overridePendingTransition");
}

Check if this log is hit or not, because we don't know weather this method is called or not?(Place it inside both the A and B) 检查这个日志是否被命中,因为我们不知道这个方法被调用的天气?(把它放在A和B里面)

Also please remove detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 另请删除detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); falg and if its hit then replace super.overridePendingTransition(enterAnim, exitAnim); falg,如果它命中,则替换super.overridePendingTransition(enterAnim, exitAnim); with super.overridePendingTransition(R.anim.fade_in, R.anim.fade_out); with super.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

No need to write anywhere else except after startActivity. 除startActivity之外,无需在其他任何地方写入。 write like this. 写这样的。

 Intent detailIntent = new Intent(this, WordDetailActivity.class);

 detailIntent.putExtra(DbAdapter.KEY_ROWID, id);
   startActivity(detailIntent);
 this.overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)
    //annination indside fragment to translate fragment

      getFragmentManager()
            .beginTransaction()
            .setCustomAnimations(R.animator.slide_in_right,
                    R.animator.slide_in_left_out,     
                                            R.animator.slide_in_left,
                    R.animator.slide_in_right_out)
            .replace(R.id.linearlayout, new mFragment())
            .addToBackStack("fragments")
            .commit();

  // add inside activity to translate activity

 Intent intent = new Intent(mContext, AbcActivity.class);
            startActivity(intent);
            overridePendingTransition(R.anim.slide_right_in,
                    R.anim.slide_left_out);

  // put this inside OnBackPressed 
    overridePendingTransition(R.anim.slide_left_in, R.anim.slide_right_out);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM