java - 原点动画android

标签 java android material-design

我目前正在根据 Material 规范设计制作动画,现在我想启用原点动画,如下所示:

Sample Animation Link

我怎样才能制作 Lollipop 前的动画?有没有办法在 Lollipop 之前的设备中做到这一点?

最佳答案

我已经实现了这一点,即创建基于 XML 的方法并将其应用到您的自定义主题。

创建anim/anim_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="0.0"
        android:toXScale="1.0"
        android:fromYScale="0.0"
        android:toYScale="1.0"
        android:fillAfter="false"
        android:startOffset="200"
        android:duration="200"
        android:pivotX = "100%"
        android:pivotY = "100%"
        />
    <translate
        android:fromYDelta="50%"
        android:toYDelta="0"
        android:startOffset="200"
        android:duration="200"
        />
</set>

然后创建anim/anim_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="0.0"
        android:fromYScale="1.0"
        android:toYScale="0.0"
        android:fillAfter="false"
        android:duration="200"
        android:pivotX = "100%"
        android:pivotY = "100%"
        />
    <translate
        android:fromYDelta="0"
        android:toYDelta="50%"
        android:duration="200"
        />
</set>

此动画源从屏幕右下角弹出一个窗口或对话框 fragment 。修改pivotXpivotY来改变原点的位置

style.xml 中定义此 Windows 动画

<style name="InOut.Window" parent="@android:style/Animation.Activity">
        <item name="android:windowEnterAnimation">@anim/anim_in</item>
        <item name="android:windowExitAnimation">@anim/anim_out</item>
    </style>

最后将此动画应用于您要创建的自定义主题的所有窗口。

<style ....>
...
<item name="android:windowAnimationStyle">@style/InOut.Window</item>
</style>

关于java - 原点动画android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29452501/

相关文章:

android - 如何为gradle设置代理服务器?

android - 更改 NumberPicker 的步长

带有 MaterialComponents 主题的 Android FAB 图标始终为黑色

java - android Activity 切换不起作用

java - OpenCV 检测最大矩形产生令人费解的结果

java - 使用 Spring MVC 上传文件

java - java.lang.NoClassDefFoundError : 中的错误

android - 使用当前汇率在 Android 中将 INR 转换为美元货币?

flutter - 如何均匀地更改 Flutter 中 slider 的轨道高度?

android - 在一项 Activity 中需要显示 3 个 Bottom Sheet