2015-10-07 98 views
3

我正在为活动返回到调用活动时编写自定义返回转换。转换将整理活动的内容淡化为调用活动的最终位置。但是,当动画完成时,调用活动的共享元素将闪烁到最终位置。共享元素返回转换闪烁

下面是一个片段我转变的createAnimator

@Override 
public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, 
     TransitionValues endValues) { 
    if (startValues == null || endValues == null) { 
     return null; 
    } 

    final ViewGroup startView = (ViewGroup) startValues.view; 
    final int startHeight = (int) startValues.values.get(PROPERTY_HEIGHT); 
    final int startWidth = (int) startValues.values.get(PROPERTY_WIDTH); 

    // Position at the original location 
    final int widthSpec = View.MeasureSpec.makeMeasureSpec(startWidth, 
      View.MeasureSpec.EXACTLY); 
    final int heightSpec = View.MeasureSpec.makeMeasureSpec(startHeight, 
      View.MeasureSpec.EXACTLY); 
    startView.measure(widthSpec, heightSpec); 
    startView.layout(0, 0, startWidth, startHeight); 

    final ObjectAnimator animator = ObjectAnimator.ofFloat(startView, "dummyValue", 0f, 1f); 
    animator.addUpdateListener(animation -> { 
     // Shift start view into end view's frame and fade out at the same time 
    }); 
    return animator; 
} 

我似乎无法找到一种方法来告诉在重新进入转型的观点在同一时间褪色英寸在上面的动画师中,startValues.viewendValues.view似乎对应于同一个对象(这就是为什么我必须将起始视图重新定位到其原始位置的原因)。

回答

0

为什么你不使用回调? setExitSharedElementCallback and setEnterSharedElementCallback在setEnterShare中执行您的视图动画...第二个活动的回调...希望这可以帮助您。

setExitSharedElementCallback(new SharedElementCallback() { 
       @Override 
       public void onSharedElementEnd(List<String> sharedElementNames, List<View> sharedElements, List<View> sharedElementSnapshots) {       
        super.onSharedElementEnd(sharedElementNames, sharedElements, sharedElementSnapshots); 
       } 
      });