我使用了一些我在滑动面板上找到的代码,基本上它可以工作但是有一个小问题.
第一次打开面板时动画不起作用.
这是动画的代码:
TranslateAnimation anim = null;
m_isOpen = !m_isOpen;
if (m_isOpen) {
setVisibility(View.VISIBLE);
anim = new TranslateAnimation(0.0f, 0.0f, getHeight(), 0.0f);
} else {
anim = new TranslateAnimation(0.0f, 0.0f, 0.0f, getHeight());
anim.setAnimationListener(new Animation.AnimationListener() {
public void onAnimationEnd(Animation animation) {
setVisibility(View.GONE);
}
public void onAnimationRepeat(Animation animation) {
// not needed
}
public void onAnimationStart(Animation animation) {
// not needed
}
});
}
anim.setDuration(300);
anim.setInterpolator(new AccelerateInterpolator(1.0f));
startAnimation(anim);
Run Code Online (Sandbox Code Playgroud)
为什么在第一次打开面板时没有动画,但其他所有动画都有?
你什么时候打电话给这个?它可能只是"在第一次之后"执行它,因为当您第一次调用它时,面板尚未渲染,并且getHeight()正在返回0.尝试等待直到getHeight()有值并开始动画.您也可以尝试将值硬编码为某种东西,以测试我的理论是否正确.