我正在尝试制作一个非常简单的向上滑动列表视图,当用户点击屏幕底部的按钮时会显示该视图。以下是它的外观:
HTML / JS http://jsbin.com/utAQOVA/1/edit
中的完整实现我尝试使用RelativeLayout
将列表放在按钮下方,然后将整个内容放入包装器中,然后向上/向下动画(与上面的JSBin相同)。
问题在于,即使我向上滑动,在开头看不到的底部也会被某种方式修剪掉。 Evern如果我最初显示列表的一部分,如下面的屏幕显示所示,当它向上移动时底部会被剪裁,只显示最初可见的部分。
做这种动画的正确方法是什么?
Here's a relevant portion of the layout
编辑:经过简短的讨论(在接受的答案的评论中)我通过删除动画部分周围的包裹LinearLayout
解决了这个问题,我只是改变了{{的高度1}},按下按钮。
答案 0 :(得分:4)
你所遇到的问题可能来自于ListView如何进行自己的布局,基本上它适合屏幕上可用的大小并绘制该部分,因为你创建了没有高度的ListView或者它保持的大小非常小的高度。您可以通过两种方法解决此问题:
改编自我在评论中提到的帖子,ValueAnimator应如下所示:
ValueAnimator va = ValueAnimator.ofInt(0, height);
va.setDuration(700);
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Integer value = (Integer) animation.getAnimatedValue();
v.getLayoutParams().height = value.intValue();
v.setTranslationY(-value.intValue());
v.requestLayout();
}
});
答案 1 :(得分:1)
您正在寻找的动画将如下所示.-
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="100%p"
android:toYDelta="0" />
您可以运行它,将其存储为动画xml资源,并执行.-
Animation anim = AnimationUtils.loadAnimation(this, R.anim.animId);
yourView.startAnimation(anim);