为什么输入动画不能在新线程中工作?

时间:2017-11-03 12:09:04

标签: android multithreading android-activity android-animation

从新线程启动活动时,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线程中有效。为什么输入动画不能在新线程中工作?

3 个答案:

答案 0 :(得分:3)

你只需使用它:

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);

快乐的编码!!

答案 1 :(得分:1)

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

因为启动新活动将占用整个屏幕,之前暂停旧动画可能是更好的解决方案,因为用户无法看到您的动画

答案 2 :(得分:0)

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

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