我正在屏幕底部创建一个2行信息栏。
这种情况很常见,在检查了不同的实现后,我来到了这个简单的工作方式:
1>中的2个布局使底部GONE> onClick - 使底部可见并在整个Bar上应用向上滑动> onClick - 在Bar上向下滑动并在GONE下方
以下是onClick代码:
mInfoBar = (RelativeLayout) mRootView.findViewById(R.id.infoBar);
mInfoBottomRow = (RelativeLayout) mRootView.findViewById(R.id.infoBottomRow);
mBtnExpand.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mInfoBottomRow.getVisibility() == View.GONE) {
mInfoBottomRow.setVisibility(View.VISIBLE);
TranslateAnimation slideUp = new TranslateAnimation(0, 0, mInfoBottomRow.getHeight(), 0);
slideUp.setDuration(200);
mInfoBar.startAnimation(slideUp);
} else {
TranslateAnimation slideDown = new TranslateAnimation(0, 0, 0, mInfoBottomRow.getHeight());
slideDown.setDuration(200);
slideDown.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
mInfoBar.clearAnimation();
mInfoBottomRow.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
});
mInfoBar.startAnimation(slideDown);
}
}
});
问题是,第一次按下按钮时,信息栏(顶行和底行)都会捕捉到它的位置(没有滑动效果)。
所有其他后续按钮按下工作正常......
第二次按下 - 栏向下滑动,显示顶部栏位于屏幕底部,底行消失。
第3次按下 - 栏向上滑动以显示顶行和底行。
依旧......
无法理解为什么setVisibility(VISIBLE)正在捕捉第一次只能查看,或者为什么第一次没有显示滑动效果。
我宁愿不改变动画实现,因为它只给我一次所需的效果。 因此,我们将非常感激其中的任何见解。
答案 0 :(得分:3)
就我猜,你的hiddenView的高度是第一次为0。您应该在布局中显示您的hiddenView。 使用
android:visibility="visible"
而不是
android:visibility="gone"
隐藏视图中的。
通过以下代码获取高度并使其消失:
hiddenView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
height = hiddenView.getHeight();
hiddenView.getViewTreeObserver().removeGlobalOnLayoutListener( this );
hiddenView.setVisibility( View.GONE );
}
});
使用此高度动画..:)