Update Scene

This commit is contained in:
seven332 committed 2015-03-24 23:23:20 +08:00
1 parent 0ce081512d
commit e2d16df66a
6 files changed
+183 -91

No files matched your search

@@ -38,6 +38,8 @@ public class TransitionCurtain extends Curtain {
private List<ObjectAnimator> mAnimList = new LinkedList<>();
private boolean mClearList = true;
public TransitionCurtain(ViewPair[] viewPairArray) {
mViewPairArray = viewPairArray;
}
@@ -59,12 +61,15 @@ public class TransitionCurtain extends Curtain {
colorAnim.addListener(new SimpleAnimatorListener() {
@Override
public void onAnimationEnd(Animator animation) {
mAnimList.clear();
if (mClearList) {
mAnimList.clear();
}
}
});
colorAnim.start();
mAnimList.add(colorAnim);
// Handle transit part
@@ -111,7 +116,11 @@ public class TransitionCurtain extends Curtain {
yAnim.addListener(new SimpleAnimatorListener() {
@Override
public void onAnimationEnd(Animator animation) {
dispatchOpenFinished(enter, exit);
ViewUtils.setVisibility(exitView, View.VISIBLE);
// Hide previous scene
// TODO remove from stage ?
ViewUtils.setVisibility(exit.getSceneView(), View.GONE);
}
});
@@ -133,8 +142,8 @@ public class TransitionCurtain extends Curtain {
}
@Override
public void close(@NonNull Scene enter, final @NonNull Scene exit) {
public void close(final @NonNull Scene enter, final @NonNull Scene exit) {
// Show previous scene
ViewUtils.setVisibility(enter.getSceneView(), View.VISIBLE);
// Handle background
@@ -142,8 +151,20 @@ public class TransitionCurtain extends Curtain {
colorAnim.setEvaluator(ArgbEvaluator.getInstance());
colorAnim.setDuration(ANIMATE_TIME);
colorAnim.addListener(new SimpleAnimatorListener() {
@Override
public void onAnimationEnd(Animator animation) {
if (mClearList) {
mAnimList.clear();
}
}
});
colorAnim.start();
mAnimList.add(colorAnim);
// Handle transit part
for (ViewPair pair : mViewPairArray) {
final View enterView = pair.getFromView(enter);
@@ -180,13 +201,7 @@ public class TransitionCurtain extends Curtain {
yAnim.addListener(new SimpleAnimatorListener() {
@Override
public void onAnimationEnd(Animator animation) {
dispatchDetachFromeStage(exit);
ViewUtils.setVisibility(enterView, View.VISIBLE);
}
@Override
public void onAnimationCancel(Animator animation) {
dispatchDetachFromeStage(exit);
dispatchCloseFinished(enter, exit);
ViewUtils.setVisibility(enterView, View.VISIBLE);
}
});
@@ -196,15 +211,23 @@ public class TransitionCurtain extends Curtain {
xAnim.start();
yAnim.start();
mAnimList.add(scaleXAnim);
mAnimList.add(scaleYAnim);
mAnimList.add(xAnim);
mAnimList.add(yAnim);
// TODO show other part progressively
}
}
@Override
public void endAnimation() {
mClearList = false;
for (ObjectAnimator oa : mAnimList) {
oa.end();
}
mClearList = true;
mAnimList.clear();
}
@Override