gpt4 book ai didi

android - 在由 getActionBar().hide() 和 getActionBar().show() 触发的动画结束时得到通知

转载 作者:行者123 更新时间:2023-11-29 21:09:02 26 4
gpt4 key购买 nike

当我使用 getActionBar().hide()getActionBar().show() 隐藏或显示 ActionBar 操作栏时(dis)出现在流畅的动画中。

有没有办法在这个动画完成后得到通知?

实现 OnLayoutChangeListener 似乎不是一个好的选择,因为 onLayoutChange() 有时也被调用 during 动画并且有无法确定哪个调用是最后一个调用。

最佳答案

Is there a way to get notified once this animation is complete?

是的,但是你必须使用反射。 ActionBarImpl uses an Animator监控显示和隐藏动画,所以你可以附上你自己的AnimatorListener到此 Field 并接收回调。

这是一个例子:

private void monitorActionBarAnimation() {
final ActionBar actionBar = getActionBar();
try {
// Get the Animator used internally
final Class<?> actionBarImpl = actionBar.getClass();
final Field currentAnimField = actionBarImpl.getDeclaredField("mCurrentShowAnim");

// Monitor the animation
final Animator currentAnim = (Animator) currentAnimField.get(actionBar);
currentAnim.addListener(new AnimatorListenerAdapter() {

@Override
public void onAnimationEnd(Animator animation) {
// Do something
}

});
} catch (final Exception ignored) {
// Nothing to do
}
}

只需确保在调用 ActionBar.showActionBar.hide 之后使用它,因为它不会在这些调用之前初始化。此外,它在 AnimatorListener.onAnimationEnd 中发布,因此您每次都需要调用它。

关于android - 在由 getActionBar().hide() 和 getActionBar().show() 触发的动画结束时得到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23537765/

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