Android設置overridePendingTransition無效解決

今天在技术群里有个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值