从服务启动的Animate Android应用

时间:2014-01-16 09:53:22

标签: android android-animation

我正在使用正常模式Service启动活动:

Intent i = new Intent(getApplicationContext(), MyActivity.class);
startActivity(i);

我希望动画启动,例如从左边滑入。

Activity,您可以使用Activity.overridePendingTransition()


是否可以通过Service动画启动活动?

1 个答案:

答案 0 :(得分:0)

我采用了将自己的活动放入启动过程的解决方法。

我的Service启动我的HelperActivity,其中包含了我想要启动/带到前面的任务的意图。

HelperActivityonCreate()中启动实际任务,使用overridePendingTransition()设置更改动画。然后调用finish()以保持隐藏状态。

显然HelperActivity需要保持隐藏在后台堆栈中,因此清单反映了这一点。


这种天真的方法也存在安全问题 - 请参阅Commonsware的相关文章:

此类活动应尽可能安全。对于我的演示版,我很高兴设置android:exported="false"


清单代码:

<activity
    android:name=".SwitchAnimationHelperActivity"
    android:excludeFromRecents="true"
    android:exported="false"
    android:noHistory="true" >
</activity>

HelperActivity代码:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    String componentName = getIntent().getStringExtra("TASK_ID_API");
    Intent newTask = new Intent(Intent.ACTION_MAIN);
    newTask.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    newTask.setComponent(ComponentName.unflattenFromString(componentName));
    startActivity(newTask);
    overridePendingTransition(R.anim.anim_zoom_in, R.anim.anim_slide_out_left);

    // job is done
    finish();
}

所以它是 - 从Service动画启动任务的一种方法。