矩阵 class 是如何工作的?
How does the matrix class work?
我最近一直在为 android 开发纸牌游戏。一切运行顺利,没有错误,所以我想开始稍微修改一下。我想做的一件事是让我的牌在发牌时从屏幕边缘滑入。听说矩阵数组class在做滚动动画的时候可以派上大用场,但是不知道怎么弄,网上搜也好像没什么用。有没有比使用矩阵更实用和有效的方法来做到这一点?如果不是,有人可以解释矩阵的工作原理吗?
您可以创建 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>
并在包含以下内容的值文件夹中创建一个名为 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 是一个视图对象,因此您必须将卡片定义为视图
我最近一直在为 android 开发纸牌游戏。一切运行顺利,没有错误,所以我想开始稍微修改一下。我想做的一件事是让我的牌在发牌时从屏幕边缘滑入。听说矩阵数组class在做滚动动画的时候可以派上大用场,但是不知道怎么弄,网上搜也好像没什么用。有没有比使用矩阵更实用和有效的方法来做到这一点?如果不是,有人可以解释矩阵的工作原理吗?
您可以创建 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>
并在包含以下内容的值文件夹中创建一个名为 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 是一个视图对象,因此您必须将卡片定义为视图