我想在活动回调方法时添加动画效果。我使用activityGroup来实现activitymanager,并使用LocalActivityManager来启动和支持任何活动。
当开始一个活动时,添加动画使用以下代码
public static void startActivity(Intent intent, String id) {
View view = mLocalActivityManager.startActivity(id,
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
Animation hyperspaceJump = AnimationUtils.loadAnimation(mActivityGroup,
R.anim.dync_in_from_right);
view.startAnimation(hyperspaceJump);
view.setTag(id);
mPreviousActivityTag = getCurrentActivityTag();
mViewContainer.addView(view);
}
但是我不知道当一个活动返回到启动cur活动的那个活动时,如何添加动画效果。返回方法类似于
public static void removeCurrentActivity() {
String tag = getCurrentActivityTag();
if (com.ct.ipaipai.global.Utily.isStringEmpty(tag) == false) {
int cnt = getActivityCount();
mViewContainer.removeViewAt(cnt - 1);
View view = mLocalActivityManager.destroyActivity(tag, true).getDecorView();
}
}
有人知道吗?
感谢
我不知道你在使用哪个ActivityGroup
,但当我过去有时使用ActivityGroup
时,我做了类似于的事情
String tag = getCurrentActivityTag();
LocalActivityManager manager = getLocalActivityManager();
Animation animation = null;
animation = AnimationUtils.loadAnimation(this, R.anim.de_rail);
Window oldWindow = manager.getCurrentActivity().getWindow();
if(oldWindow != null)
{
View v =oldWindow.getDecorView();
v.setBackgroundResource(R.drawable.app_pink_background);
v.startAnimation(animation);
}
manager.destroyActivity(tag, true);
// now set old Activity View
Intent lastIntent = manager.getActivity(lastId).getIntent();
Window newWindow = manager.startActivity(lastId, lastIntent);
if(newWindow != null)
{
View view = newWindow.getDecorView();
setContentView(view);
}
其中R.anim.de_rail
,实际上是de_rail.xml
,是这样的:
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0%p"
android:toXDelta="100%p"
android:duration="400" />
你可以在这里找到我的修改版本。它在开始子Activity
和结束子Activity
上显示动画。