【问题标题】:Animate addition to android listview?android listview的动画添加?
【发布时间】:2015-06-09 04:42:01
【问题描述】:

在我的应用程序中,我每 30 秒从 JSON 提要中获取数据并将其显示在列表视图中。数据和列表视图工作得很好,但是,当它更新时,应用程序只是颠簸并且看起来不正确。有什么方法可以为这个过渡设置动画吗?当它更新时,数据只是向上移动一个索引,该索引存储在一个列表视图中。这是我更新列表视图的代码

list = (ListView) rootView.findViewById(R.id.list);
LiveAdapter adapter = new LiveAdapter(LiveStreamFragment.this.getActivity(), oslist, LiveStreamFragment.this, list);
list.setAdapter(adapter);

【问题讨论】:

  • 更新适配器是不是又要添加适配器了?
  • 是的,这段代码每三十秒调用一次
  • 而不是添加整个适配器,只需将加载的项目更新(添加)到适配器中的列表并调用 notifyDatasetChanged()。如果你想要它作为动画,只需在更新数据之前使用 smoothScrollTo() 大小

标签: java android json list jquery-animate


【解决方案1】:

在自定义适配器的 getView() 方法中为每个添加的元素设置动画。

    public View getView(int position, View convertView, ViewGroup parent) {

        View v = convertView;
       // Your code ..............
       if(flag == false) {
           Animation animation =  AnimationUtils.loadAnimation(getActivity(), R.anim.slide_top_to_bottom);
           v.startAnimation(animation);
         }
        return v;
    }

LayoutTransition(在 Android 3.0 中引入)继续提供使某些类型的动画更容易的功能,特别是在添加、删除、隐藏和显示视图时。例如,布局文件中的这个 sn-p:

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:animateLayoutChanges="true"></ListView>

与仅设置布局更改标志相比,使用 ListView 动画更改有点棘手,因为适配器会进行视图回收。 Chet Haase 已经完成了一系列 DevBytes 文章,解释了这些问题以及如何在此处正确地做这类事情。我认为,这可能与您的困境最相关。

DevBytes: ListView Animations

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多