gpt4 book ai didi

android - 将 ListView 项目动画化为垃圾

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:28 25 4
gpt4 key购买 nike

在我的 ListView 下方,我有一个带有垃圾桶的栏。

当执行某些操作时,假设它只是单击该项目,我希望该项目动画到垃圾桶。这意味着向下移动和水平收缩到宽度为 0。

如何实现?我怀疑它涉及创建项目的位图,然后将该位图向下动画化并变得越来越小。这也意味着,根据列表项相对于屏幕的位置,它可能需要比其他时间收缩得更快(即:如果列表项已经接近屏幕底部而不是顶部)。我只是不确定如何实现这些。

我制作的唯一动画涉及从屏幕底部呈现一个栏。我没有在自由 float 物体周围移动并改变其大小的经验。

谁能给我一些好的指导?

最佳答案

按照以下步骤实现该目标:

首先,您需要创建列表项的“吸尘器”副本。为此,您需要扩充一个新 View ,该 View 与 ListView 中的列表项具有相同的结构。之后,您需要将其添加到窗口管理器中,如下所示:

            WindowManager.LayoutParams windowParams = new WindowManager.LayoutParams();
windowParams.gravity = Gravity.TOP | Gravity.RIGHT;
windowParams.x = item.getLeft();
windowParams.y = item.getTop();
windowParams.height = item.getHeight();
windowParams.width = item.getWidth();
windowParams.flags =
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
windowParams.format = PixelFormat.TRANSLUCENT;
windowParams.windowAnimations = 0;

View hooveredView = getClonedView(item);

// Add the hoovered view to the window manager, as a new view in the screen
WindowManager mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
mWindowManager.addView(hooveredView, windowParams);

现在,创建获取 WindowParams 的新 Animation 类,并更改 x 和 y 坐标,以便将 hoovered 项目移动到下方的垃圾栏。使用此代码更新新的 View 位置:

        mWindowManager.updateViewLayout(mViewToAnimate, mWindowParams);

您还可以调整宽度和高度来模拟 View 的缩小。

为了给列表中留下的空白点设置动画,您可以使用我在博客上解释的 ExpandAnimation: http://udinic.wordpress.com/2011/09/03/expanding-listview-items/

差不多就这些了。如果您需要更多详细信息,请直接询问。

关于android - 将 ListView 项目动画化为垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4627988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com