【问题标题】:Can't figure out why overridePendingTransition works in one instance but is ignored in another无法弄清楚为什么 overridePendingTransition 在一个实例中有效但在另一个实例中被忽略
【发布时间】:2017-11-23 01:00:24
【问题描述】:

我不明白为什么当我单击以下代码上的“toactility”按钮时,overridePendingTransition 根本没有响应,而是收到了默认的淡入淡出样式动画。这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_information_navi);


    Button ToMainActivity = (Button)findViewById(R.id.toactivity);
    ToMainActivity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent startIntent = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(startIntent);

            overridePendingTransition(0, R.anim.navigation_slide_left);
            finish();

        }
    });

}

我尝试将finish(); 放置在startActivity(startIntent); 上方和下方的各个位置。 overridePendingTransition 被忽略。

但是,在 Android 硬后按按钮上,overridePendingTransition 可以正常工作。代码如下:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case android.R.id.home:
            finish();
            return true;


    }
    return super.onOptionsItemSelected(item);
}

@Override
public void finish() {
    super.finish();
    overridePendingTransition(0, R.anim.navigation_slide_left);
}

无法弄清楚为什么overridePendingTransition 代码在低于或高于startActivity(startIntent); 时不起作用

如何让它工作?

【问题讨论】:

    标签: android overriding navigation-drawer transition


    【解决方案1】:

    来自here where I have answered,这样使用:

    overridePendingTransition(R.anim.enter_from_right, R.anim.exit_out_left);
    

    然后在res->anim文件夹中:

    enter_from_right.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <set
        xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <translate
            android:duration="300"
            android:fromXDelta="100%"
            android:toXDelta="0%" >
        </translate>
    </set>
    

    exit_out_left.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <set
        xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <translate
            android:duration="300"
            android:fromXDelta="0%"
            android:toXDelta="-100%" >
        </translate>
    </set>
    

    【讨论】:

    • @iBEK 该行应该放在 startActivity() 之后会发生什么?
    • 它之后,我得到了类似的淡入淡出动画,默认动画。
    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    相关资源
    最近更新 更多