【问题标题】:Why entering animation is not working in new thread?为什么进入动画在新线程中不起作用?
【发布时间】:2018-04-16 04:00:28
【问题描述】:

从新线程启动 Activity 时,Entry Transition 动画不起作用。

 new Thread(new Runnable() {
                @Override
                public void run() {
                    Intent listIntent = new Intent(HomeFragment.this.getActivity(),
                            ListActivity.class);
                    listIntent.putExtra(getString(R.string.type_id), data.get(i).getType_id());
                    listIntent.putExtra(getString(R.string.translation_title), data.get(i).getTranslate_type());
                    startActivity(listIntent);
                    getActivity().overridePendingTransition(R.anim.slide_up, R.anim.fade_in);
                }
            }).start();

但过渡动画在 ui 线程中有效。为什么进入动画在新线程中不起作用?

【问题讨论】:

    标签: android multithreading android-activity android-animation


    【解决方案1】:

    你只需使用这个:

    Handler h = new Handler();
    h.postDelayed(new Runnable() {
    
        @Override
        public void run() {
             Intent listIntent = new Intent(HomeFragment.this.getActivity(),
                            ListActivity.class);
             listIntent.putExtra(getString(R.string.type_id), data.get(i).getType_id());
             listIntent.putExtra(getString(R.string.translation_title), data.get(i).getTranslate_type());
             startActivity(listIntent);
             getActivity().overridePendingTransition(R.anim.slide_up, R.anim.fade_in);
        }
    }, 100);
    

    编码愉快!!

    【讨论】:

    • 谢谢哥们。它正在工作 :) 你能告诉我为什么它的行为很奇怪吗?
    • "new Thread" 在您的调用中被视为创建一个不是主线程的新线程(无法启动新活动)正如此答案中所修复的那样,使用处理程序将在线程中运行你称之为(可能是 UI 线程)
    【解决方案2】:

    您对启动新活动的调用被视为 UI 部分,请仅在 UI 线程中执行,

    由于启动新活动将占据您的整个屏幕,因此暂停旧动画可能是更好的解决方案,因为用户无论如何都看不到您的动画

    【讨论】:

    • 感谢您的回答。我会执行的。
    【解决方案3】:

    为什么要创建一个单独的线程来创建一个活动?

    Intent intent = new Intent( getContext(), ListActivity.class);
    startActivity(intent);
    

    【讨论】:

    • 我的 UI 线程正在做动画。在 UI 线程中创建活动时,动画卡顿!这就是为什么我要找一个新线程。
    猜你喜欢
    • 2018-03-04
    • 2017-05-20
    • 2020-12-06
    • 2011-11-16
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多