我正在使用正常模式Service
启动活动:
Intent i = new Intent(getApplicationContext(), MyActivity.class);
startActivity(i);
我希望动画启动,例如从左边滑入。
从Activity
,您可以使用Activity.overridePendingTransition()。
是否可以通过Service
动画启动活动?
答案 0 :(得分:0)
我采用了将自己的活动放入启动过程的解决方法。
我的Service
启动我的HelperActivity
,其中包含了我想要启动/带到前面的任务的意图。
HelperActivity
在onCreate()
中启动实际任务,使用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
动画启动任务的一种方法。