矩阵类如何工作?

时间:2015-01-26 16:46:08

标签: android matrix

我最近一直在为Android开发纸牌游戏。一切顺利,没有错误,所以我想开始接触它。我想做的一件事就是让我的卡片在发出时从屏幕边缘滑入。我听说矩阵数组类在进行滚动动画时非常有用,但我不知道如何做到这一点,在线搜索似乎没有任何用处。有没有比使用矩阵更实际有效的方法呢?如果没有,有人可以解释矩阵是如何工作的吗?

1 个答案:

答案 0 :(得分:1)

您可以创建Animator并将其附加到卡片对象上。 (或者只是加载动画并在需要时播放它,我将在下面使用一些代码显示)

然后你需要在res中创建一个名为anim的文件夹,在该文件夹中创建两个文件:

slide_up_left.xml

     <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >

    <translate
        android:duration="@integer/config_slide_time"
        android:fromYDelta="100%p"
        android:toYDelta="0" />

    <alpha
        android:duration="@integer/config_slide_time"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />

    <rotate
        android:duration="@integer/config_slide_time"
        android:fromDegrees="25"
        android:pivotX="0"
        android:pivotY="0"
        android:toDegrees="0" />

</set>

slide_up_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >

    <translate
        android:duration="@integer/config_slide_time"
        android:fromYDelta="100%p"
        android:toYDelta="0" />

    <alpha
        android:duration="@integer/config_slide_time"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />

    <rotate
        android:duration="@integer/config_slide_time"
        android:fromDegrees="-25"
        android:pivotX="100%"
        android:pivotY="0"
        android:toDegrees="0" />

</set>

在您的values文件夹中创建一个名为integers的xml文件,其中包含:

 <?xml version="1.0" encoding="utf-8"?>
<resources>
     <integer name="config_slide_time">800</integer>
</resources>

如果您不需要Animator对象,请使用以下代码:

YOURCARD_VIEW.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.slide_up_left)); 

或者

YOURCARD_VIEW.startAnimation( AnimationUtils.loadAnimation(getContext(), R.anim.slide_up_right));

YOURCARD_VIEW是一个View对象,因此您必须将卡定义为View