我有一个视图(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());
}
};