Android ObjectAnimator 在第二个动画上闪烁



我有一个视图(sendSidePanel),我在渲染视图时隐藏了它:

public void setListnerToRootView(){
   final View activityRootView = getWindow().getDecorView().findViewById(android.R.id.content); 
   final RelativeLayout sendSlidePanelFinal = (RelativeLayout)findViewById(R.id.sendSlidePanel);
   final ViewTreeObserver observer = activityRootView.getViewTreeObserver();
   observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
       @Override
       public void onGlobalLayout() {
           ViewHelper.setTranslationY(sendSlidePanel, sendSlidePanelFinal.getHeight());
       }
   });
}

我使用ObjectAnimator在按下按钮时对上下视图进行动画处理:

if(panelDown){
    ObjectAnimator anim = ObjectAnimator.ofFloat(sendSlidePanel, "translationY", 0);
    panelDown=false;
}
else{
    ObjectAnimator anim = ObjectAnimator.ofFloat(sendSlidePanel, "translationY", chatPanel.getHeight());
    panelDown=true;
 }

问题是,当我想将面板动画化下来(又名 panelDown==false)时,在它向下动画之前,视图会略有闪烁(sendSlidePanel)。

但是,我确实尝试过,一开始没有隐藏视图,而是在单击按钮时将其动画化。在这种情况下不会发生闪烁。似乎只有在初始动画之后才会发生闪烁。

我什至尝试过,但无济于事:

public void onAnimationEnd(Animator arg0) {
    //Attempt to get rid of flicker
    sendSlidePanel.clearAnimation();
    sendSlidePanel.requestLayout();                 
}

即使这样,也无济于事:安卓动画闪烁

请帮忙,谢谢!

尝试使用 AnimatorUpdateListener 来更新视图的 y,如下所示:

anim.addUpdateListener(mUpdateListener);

private AnimatorUpdateListener mUpdateListener = new AnimatorUpdateListener(){
        @Override
        public void onAnimationUpdate(ValueAnimator arg0) {
            Float animatedValue = (Float)arg0.getAnimatedValue();
            ViewHelper.setY(mView,animatedValue.floatValue());
        }
    };

最新更新