gpt4 book ai didi

Android ObjectAnimator 在第二个动画上闪烁

转载 作者:行者123 更新时间:2023-11-30 03:18:47 24 4
gpt4 key购买 nike

我有一个 View (sendSidePanel),我在呈现 View 时将其隐藏:

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 在按下按钮时使 View 上下动画:

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

问题是,当我想要向下动画面板(又名 panelDown==false)时, View (sendSlidePanel) 在向下动画之前会有轻微的闪烁。

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

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

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

甚至这样,但无济于事: Android Animation Flicker

请帮忙,谢谢!

最佳答案

尝试使用 AnimatorUpdateListener 来更新 View 的 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());
}

};

关于Android ObjectAnimator 在第二个动画上闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19547473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com