android - 使用 setX、setPadding 或补间动画滑动 ListView?

标签 android listview android-animation slide tween

无需过多介绍,我希望能够在 ListView 中“滑动”元素,类似于 GMail 中的“滑动到存档”功能。我对 onTouchListener 没意见,我的问题是关于幻灯片动画。

首先想到的两件事是..

view.setPadding(slideOffset, 0, 0, 0);

和..

view.setX(slideOffset);

前者非常黄油,即使在模拟器上也是如此。
后者在我的 Galaxy Nexus 上有点笨拙。

我的问题:
* 无论我尝试过什么,正确的方法是什么?
为什么 setX 不如 setPadding 平滑?
一种方法是否比另一种更符合 Android 最佳实践?
补间翻译动画是一种选择吗?如果是这样,您能否提供一个简短的示例来为我指明正确的方向?

编辑:
为了清楚起见,我附上了一张我试图模拟的效果的图片。

enter image description here

最佳答案

我很确定 setX() 比较慢,因为它影响了它的 parent 。更改 View 的 X 时,每次更新值时它都会调用父级的 onLayout/onMeasure。这是因为child 的X 值可能会导致parent 上的其他item 发生移动,因此parent 需要自己重绘。

您可以通过扩展 ViewGroup 并写入这些方法的日志来轻松测试它。然后,您可以使用这两种方法,填充与 setX,看看会发生什么。

您是否要为该项目制作动画?或者您是否希望用户像在 Gmail 上一样移动它?您可以使用 ObjectAnimator 来处理项目的“X”值。结合您的项目的“硬件层”,它将创造更流畅的体验。您可以在此处找到有关如何执行此操作的更多详细信息:http://developer.android.com/guide/topics/graphics/hardware-accel.html

关于android - 使用 setX、setPadding 或补间动画滑动 ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677757/

相关文章:

android - 如何使用聊天应用程序的 socket.io 将 React Native 应用程序连接到实时 URL 服务器?

Android - 如何使按钮文本闪烁/闪烁?

android - 动画的 Activity 转换发生得太快

Android ListView 自定义 header

Android、SlidingPaneLayout 和 listView

html - Android:如何在 ListView 中添加 HTML 链接?

android - 为什么 SwitchPreference 在从开到关切换时不显示动画,反之亦然?

java - `.build()` 在 Google Analytics for Android 的上下文中做什么?

java - SQLiteDatabase Android 中出现 java.lang.NullPointerException 错误

android - findViewById 返回 null - Android - setContentView