如何用动画添加或删除 Android ListView 行

2023-11-26

在 iOS 中,有一个非常简单且强大的工具可以对 UITableView 行的添加和删除进行动画处理,这是 YouTube 视频的剪辑显示默认动画。请注意周围的行如何折叠到已删除的行上。此动画可帮助用户跟踪列表中发生的更改以及数据更改时他们正在查看的列表中的位置。

自从我在 Android 上进行开发以来,我发现没有等效的工具可以为单个行添加动画效果。表格视图。呼唤notifyDataSetChanged()我的适配器上的 导致 ListView 立即用新信息更新其内容。我想展示一个简单的动画,显示数据更改时新行推入或滑出的动画,但我找不到任何记录的方法来执行此操作。看起来像布局动画控制器可能是让它发挥作用的关键,但是当我在 ListView 上设置 LayoutAnimationController 时(类似于ApiDemo的LayoutAnimation2)并在列表显示后从我的适配器中删除元素,这些元素立即消失而不是动画显示。

我还尝试过类似以下的操作来在单个项目被删除时为其设置动画:

@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
    Animation animation = new ScaleAnimation(1, 1, 1, 0);
    animation.setDuration(100);
    getListView().getChildAt(position).startAnimation(animation);
    l.postDelayed(new Runnable() {
        public void run() {
            mStringList.remove(position);
            mAdapter.notifyDataSetChanged();
        }
    }, 100);
}

但是,动画行周围的行不会移动位置,直到它们跳到新位置时notifyDataSetChanged()叫做。看来 ListView 在放置元素后不会更新其布局。

虽然我曾经想过编写自己的 ListView 实现/分支,但这似乎不应该那么困难。

Thanks!


Animation anim = AnimationUtils.loadAnimation(
                     GoTransitApp.this, android.R.anim.slide_out_right
                 );
anim.setDuration(500);
listView.getChildAt(index).startAnimation(anim );

new Handler().postDelayed(new Runnable() {

    public void run() {

        FavouritesManager.getInstance().remove(
            FavouritesManager.getInstance().getTripManagerAtIndex(index)
        );
        populateList();
        adapter.notifyDataSetChanged();

    }

}, anim.getDuration());

对于从上到下的动画使用:

<set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromYDelta="20%p" android:toYDelta="-20"
            android:duration="@android:integer/config_mediumAnimTime"/>
        <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
</set>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用动画添加或删除 Android ListView 行 的相关文章

随机推荐

  • php中的“iif”是什么意思?

    有人在 php 中见过这个 iif 吗 那到底是什么 我尝试在 php net 中搜索它的文档 但找不到任何文档 任何人都可以举一个如何使用这个 iif 的简单例子吗 功能iif标准 PHP 库中不存在 但在大多数情况下 它是一个 短 if
  • 将多种算法与 sklearn pipeline 进行比较

    我正在尝试建立一个 scikit learn 管道来简化我的工作 我面临的问题是我不知道哪种算法 随机森林 朴素贝叶斯 决策树等 最适合 所以我需要尝试每种算法并比较结果 然而 管道一次只能采用一种算法吗 例如 下面的管道仅采用 SGDCl
  • 为什么默认参数尾随参数?

    为什么 C 中的默认参数是尾随参数 如果你有void func int a 0 int b 您将如何指定在调用此函数时使用默认参数
  • 如何使用 Python 从 OpenCV 3 中的持久 XML/YAML 文件读取/写入矩阵?

    我一直在尝试使用以下命令读取矩阵并将其写入持久文件存储 例如 XML Anaconda的电流cv2 我相信实际上是 OpenCV 3 x 我在网上查看了解决方案 人们参考了这样的解决方案 object cv2 cv Load file ob
  • 无法找到请求的.Net Framework 数据提供程序。它可能没有安装

    完成 ASP NET MVC 3 教程后 找到here 我尝试在线发布该应用程序 我联系了托管公司 以确定是否可以托管 MVC 3 应用程序 我必须对 dll 文件 应用程序进行 bin 部署 所以在执行了一些步骤之后汉塞尔曼博客 我陷入了
  • Python 字符串中出现意外的空字符串

    观察以下交互式会话 In 1 s emptiness In 2 s replace Out 2 e m p t i n e s s In 3 s count Out 3 10 我今天发现了这一点 这对我来说有点困惑和惊讶 我喜欢学习类似 P
  • PHP 类为什么使用 public 关键字?

    为什么要使用关键字声明类属性 变量 或方法 函数 public 如果它们默认是公开的 或者说 他们是吗 用不同的方式表达我的问题是public多余的 我明白private and protected 但为什么要声明public如果班级成员是
  • 如何强制/确保类属性是特定类型?

    如何在 Python 中将类成员变量限制为特定类型 更长的版本 我有一个类 它有几个在类外部设置的成员变量 由于它们的使用方式 它们必须是特定类型 要么是 int 要么是 list 如果这是 C 我只需将它们设为私有并在 set 函数中进行
  • 在同一天蓝色功能应用程序下部署多个功能不起作用

    尝试在同一个azure函数应用服务帐户中部署3个不同类型的函数 CosmosDBTrigger TimerTrigger HttpTrigger 附上文件夹结构以供参考 功能未按预期运行 但在成功部署后抛出错误 收到异常 函数 CopyTo
  • 哈希在Python中做什么?

    我看到了一个代码示例 其中hash函数应用于元组 结果它返回一个负整数 我想知道这个功能是做什么的 谷歌没有帮助 我找到了一个页面 解释了哈希值是如何计算的 但它没有解释为什么我们需要这个函数 哈希是一个固定大小的整数 用于标识特定值 每个
  • 如何让 DIV 滑入和滑出?

    我目前正在学习 jQuery 我想知道当您单击图像边缘时如何使图像滑入 然后再次单击它会滑开 与此类似 http www karenmillen com 如果您看到右侧并单击 就会出现我正在寻找的效果 我认为这将涉及制作一个 div 并给它
  • IPython 中的并行嵌套 for 循环

    我的 python 代码中有一个嵌套的 for 循环 如下所示 results for azimuth in azimuths for zenith in zeniths Do various bits of stuff Eventuall
  • 在Python中有很多点的图中找到两个最远的点

    我需要找到彼此距离最远的两个点 正如屏幕截图所示 我有一个包含另外两个数组的数组 一个用于 X 坐标 一个用于 Y 坐标 确定数据中最长线的最佳方法是什么 通过这样说 我需要选择图中最远的两个点 希望大家能帮忙 以下是一些屏幕截图 可帮助解
  • 在 PHP 中重写派生类中的静态成员

    那么最好的解决方法是什么 解决这个问题的最好方法是升级到 PHP 5 3 其中后期静态绑定可用 如果这不是一个选择
  • FragmentTabHost:没有已知标记为 null 的选项卡

    我在设计器中遇到了这个异常 Exception raised during rendering No tab known for tag null 我和这个人有相同的确切代码 Android FragmentTabHost 没有标签为空的标
  • 如何在Windows Phone 7中应用程序启动时显示不同的页面?

    当应用程序启动时需要显示注册页面 用户注册后 它不应该进入注册页面 而需要进入登录页面 如何实现这一目标 您可以从代码导航到 Windows Phone 应用程序的起始页 从 WMAppManifest 中删除 DefaultTask 条目
  • 3D相机坐标到世界坐标(改变基础?)

    假设我有一个对象相对于相机的 X Y Z 坐标和方向 Rx Ry Rz 另外 我还有这个相机在世界上的坐标U V W和方向Ru Rv Rw 如何将对象的位置 位置和旋转 转换为其在世界中的位置 对我来说 这听起来像是基础的改变 但我还没有找
  • Spring Data JPA 方法对多个字段使用 findBy 并对所有字段使用 Containing 子句是什么

    我有一个名为 Profile 的类及其 JPA 存储库 ProfileRepo 我正在尝试使用 findBy 方法来查找使用名字或中间名或姓氏以及包含子句的名称 public class Profile private String fir
  • Web 扩展:如何使用“browser_style = true”?

    编写 Firefox Web 扩展时 可以对浏览器或页面操作使用默认 css 以便它们的样式与其他浏览器 UI 组件一样 这是通过插入完成的 browser style true 在扩展清单中 风格喜欢panel section foote
  • 如何用动画添加或删除 Android ListView 行

    在 iOS 中 有一个非常简单且强大的工具可以对 UITableView 行的添加和删除进行动画处理 这是 YouTube 视频的剪辑显示默认动画 请注意周围的行如何折叠到已删除的行上 此动画可帮助用户跟踪列表中发生的更改以及数据更改时他们