【问题标题】:How do I animate expansion of a ListView?如何为 ListView 的扩展设置动画?
【发布时间】:2014-11-05 16:44:53
【问题描述】:

我正在寻找实现在 android 中滑动打开或展开 ListView 的动画。目前,我正在使用缩放动画(如下所示)

    Animation slideDown = new ScaleAnimation(1.0f, 1.0f, 0.0f, 1.0f);
    slideDown.setDuration(1000);

但这不起作用有两个原因:

1) 我希望第一个项目淡入,然后列表下拉。如果我在动画中进行淡入淡出,整个列表会显示出来,然后跳回顶部并缩小到全尺寸

2) 我并不是真的想按比例缩放,我只想通过在底部设置动画来显示 ListView(如果有意义的话)。

有没有一种方法可以只在底部边缘或类似的地方进行 TranslateAnimation?我查看了可绘制剪辑资源,但这似乎不符合我的需求(我不确定如何将它应用于 ListView)。而且我使用的是普通的 ListView,而不是 ExpandableListView,因为我只有一组项目。

【问题讨论】:

    标签: android listview animation


    【解决方案1】:

    所以我开始寻找不同的东西,结果证明高度动画是我的解决方案。本质上,我从列表中的一个虚拟对象开始(这样它至少有 1 行),然后我将它从该行的高度设置为整个列表的高度。下面是我现在调用的可运行文件的代码。

    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。

    【讨论】:

      【解决方案2】:

      新元素 Recycler View 包含动画。您可以将它与支持库一起使用

      https://developer.android.com/training/material/lists-cards.html

      【讨论】:

      • Recycler 视图看起来很酷,但我希望动画化整个视图的展开/打开,而不是视图中的项目。从我最初看到的来看,Recycler 似乎没有为视图本身的动画提供任何优于 ListView 的额外好处。
      • @Andrew 你能澄清一下评论吗?例如,像时钟应用程序的闹钟部分一样,它会扩展以显示更多详细信息。使用 RecyclerView 可以制作这样的动画吗?
      猜你喜欢
      • 1970-01-01
      • 2014-12-15
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 2011-12-05
      相关资源
      最近更新 更多