Android設置overridePendingTransition無效解決

来源:互联网 发布:淘宝定金链接怎么做 编辑:程序博客网 时间:2024/05/21 08:45

今天在技术群里有个overridePendingTransition设置无效的问题,相信大家都不陌生,这个方法是Activity中用来设置转场动画的。当时我看到他的截图中有个.start();我断定应该是子线程的问题,所以动手写了个测试,结果还真是。


正常启动方式

 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);        fab.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                startActivity(new Intent(A_Activity.this, B_Activity.class));                overridePendingTransition(R.anim.my_splash_in, R.anim.my_splash_out);                finish();                Log.i(TAG, "run:= "+Thread.currentThread().getName());            }        });

这里写图片描述


异常的启动方式

 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);        fab.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Runnable runnable = new Runnable() {                    @Override                    public void run() {                        startActivity(new Intent(A_Activity.this, B_Activity.class));                        overridePendingTransition(R.anim.my_splash_in, R.anim.my_splash_out);                        finish();                        Log.i(TAG, "run:= "+Thread.currentThread().getName());                    }                };               //开启子线程                new Thread(runnable).start();            }        });

这里写图片描述

注意:子线程中动画并非是完全不管用,有时管用有时不管用


解决方案


  把跳转的代码放在runOnUiThread()中执行。

总结

 把自己遇到的问题以及解决方法分享出来,让千万同行少走弯路。不要让bug浪费我们的生命。
0 0
原创粉丝点击