我希望实现一个可以在Android中滑动打开或扩展ListView的动画。目前,我正在使用缩放动画(如下所示)
Animation slideDown = new ScaleAnimation(1.0f, 1.0f, 0.0f, 1.0f);
slideDown.setDuration(1000);
但这有两个原因无效:
1)我希望第一个项目淡入,然后是要下拉的列表。如果我执行淡入淡出的动画,整个列表会显示,然后跳回到顶部并缩小到完整大小
2)我并不真正想要扩展,我想通过动画底部来揭示ListView(如果有意义的话)。
有没有办法可以在底部边缘或类似的东西上进行TranslateAnimation?我查看了可绘制的Clip资源,但这似乎并不适合我的需求(我不确定如何将它应用于ListView)。我使用普通的ListView,而不是ExpandableListView,因为我只有一组项目。
答案 0 :(得分:1)
所以我开始寻找不同的东西,事实证明,动画高度是我的解决方案。基本上我从列表中的虚拟对象开始(因此它至少有一行),然后我将它从该行的高度设置为完整列表的高度。下面是我正在调用的runnable的代码。
private Runnable slideDownList1 = new Runnable() {
@Override
public void run() {
final ListView detail = (ListView)getView().findViewById(R.id.detail_menu_1);
ValueAnimator va = ValueAnimator.ofInt(detail.getHeight(), detail.getHeight()*mItem.containedObjects.size());
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Integer value = (Integer) animation.getAnimatedValue();
detail.getLayoutParams().height = value.intValue();
detail.requestLayout();
}
});
va.setDuration(1000);
va.start();
}
};
XML只是一个基本的ListView,其id为detail_menu_1。
答案 1 :(得分:0)
新元素Recycler View包含动画。您可以将它与支持库一起使用
https://developer.android.com/training/material/lists-cards.html