动画android Gridview项目

时间:2014-04-22 12:48:43

标签: android animation android-animation android-gridview

enter image description here

enter image description here

enter image description here

enter image description here

我希望为gridview的项目设置动画,使每个项目集中到视图中心并且一个项目可见,然后网格项目再次移回其原始位置。为清晰起见,我添加了图片。动画流程如图1-图2-图3 - 图4 - 图1.如何完成?

1 个答案:

答案 0 :(得分:6)

我用这种方式解决了问题:

一个。找到Gridview的总宽度(W)和高度(H)。

W = (widthOfEachItem*totalItem) + (spacingBetweenItems*(totalItem-1))
H = (heightOfTheItem*totalItem) + (spacingBetweenItems*(totalItem-1))

B中。找到Gridview的中心(Cx,Cy); Cx =宽度/ 2,Cy =高度/ 2。 x坐标(Cx)将针对一行中的每个项目进行更改。 y坐标(Cy)将针对列中的每个项目进行更改。

下进行。

  1. 对于矩阵位置(0,0)的gridItem。

    查找翻译百分比

    x%=(Cx / W)* 100,y%=(Cy / W)* 100

    将项目从XDelta = 0翻译为XDelta = x%p从YDelta = 0到YDelta = y%p

  2. 对于矩阵位置(0,1)的gridItem。    GridView中心的x坐标对于此项更接近,因此我们必须扣除(widthOfEachItem + spacingBetweenItems)。

    现在Cx = Cx - (widthOfEachItem + spacingBetweenItems)

    在这种情况下,只有x坐标会发生变化。 y坐标将保持不变。

    查找翻译百分比:

    x%=(Cx / W)* 100,y%=(Cy / W)* 100

    将项目从XDelta = 0翻译为XDelta = x%p从YDelta = 0到YDelta = y%p

  3. 对于矩阵位置(1,0)的gridItem。

    Gridview中心的y坐标离这个项目更近,所以我们必须扣除(heightOfTheItem + spacingBetweenItems)。

    现在Cy = Cy - (heightOfTheItem + spacingBetweenItems)

    在这种情况下,只有y坐标会发生变化。 x坐标将与(0,0)的项目保持一致。

    找到翻译的百分比 -

    x%=(Cx / W)* 100,y%=(Cy / W)* 100

    将项目从XDelta = 0翻译为XDelta = x%p从YDelta = 0到YDelta = y%p

  4. 对于矩阵位置(1,1)的网格项。

    GridView中心的x坐标对于此项更接近,因此我们必须扣除(widthOfEachItem + spacingBetweenItems)。

    现在Cx = Cx - (widthOfEachItem + spacingBetweenItems)

    GridView中心的y坐标对于此项更接近,因此我们必须扣除(heightOfTheItem + spacingBetweenItems)。

    现在Cy = Cy - (heightOfTheItem + spacingBetweenItems)

    在这种情况下,x和y坐标都会发生变化。

    找到翻译的百分比 -

    x%=(Cx / W)* 100,y%=(Cy / W)* 100;

    将项目从XDelta = 0转换为XDelta = x%p从YDelta = 0转换为YDelta = y%p

    以这种方式计算GridView中所有项目的x%和y%值。

    对于超出中心项目的行中的项目,toXDelta将为-ve。

    对于超出中心项目的列中的项目,toYDelta将为-ve。

    为了更准确地对齐中心的项目(动画之后),请考虑将每个项目中心的坐标添加并扣除到Gridview的中心。

    将项目从原始位置转换为中心后,如果要将它们转换回原始位置,只需将值设为* Delta -ve。

    这是我为(0,0)的GridView项目所做的:

  5. <translate
                android:duration="600"
                android:fromXDelta="0%p"
                android:fromYDelta="0%p"
                android:toXDelta="-7.8%p"
                android:toYDelta="33.40%p" />
            <translate
                android:duration="600"
                android:fromXDelta="0%p"
                android:fromYDelta="0%p"
                android:startOffset="1050"
                android:toXDelta="7.8%p"
                android:toYDelta="-33.40%p" />
    

    <translate android:duration="600" android:fromXDelta="0%p" android:fromYDelta="0%p" android:toXDelta="-7.8%p" android:toYDelta="33.40%p" /> <translate android:duration="600" android:fromXDelta="0%p" android:fromYDelta="0%p" android:startOffset="1050" android:toXDelta="7.8%p" android:toYDelta="-33.40%p" />

相关问题