Android L“令人愉悦”的可绘制物转换

6

谷歌是否允许开发者创建像这样的过渡效果图标?或者这是开发者自己的责任来创建这些“令人愉悦”的过渡效果?我真的很想在我的应用程序中实现这些。

具体地说,是像这样的图标

1个回答

10

您可以使用AnimatedDrawable和基于位图的帧来创建动画图标。在L版本及以上,您可以使用AnimatedStateListDrawable来创建具有状态的动画(例如复选框动画)。

以下是一个AnimatedDrawable示例(实际上这是L版本预览中复选框的实现),它使用15毫秒长的帧,可以从代码中启动和停止:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:duration="15" android:drawable="@drawable/my_icon_frame_000" />
    ...additional frames...
</animation-list>

这里是使用AnimatedDrawable转换实现复选框动画的AnimatedStateListDrawable,它根据View状态自动启动和停止:

<animated-selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:state_checked="true">
        <bitmap android:src="@drawable/btn_check_to_on_mtrl_015" android:tint="?attr/colorControlActivated" android:alpha="?attr/disabledAlpha" />
    </item>
    <item android:state_enabled="false">
        <bitmap android:src="@drawable/btn_check_to_on_mtrl_000" android:tint="?attr/colorControlNormal" android:alpha="?attr/disabledAlpha" />
    </item>
    <item android:state_checked="true" android:id="@+id/on">
        <bitmap android:src="@drawable/btn_check_to_on_mtrl_015" android:tint="?attr/colorControlActivated" />
    </item>
    <item android:id="@+id/off">
        <bitmap android:src="@drawable/btn_check_to_on_mtrl_000" android:tint="?attr/colorControlNormal" />
    </item>
    <transition android:fromId="@+id/off" android:toId="@+id/on">
        <animation-list>
            <item android:duration="15">
                <bitmap android:src="@drawable/btn_check_to_on_mtrl_000" android:tint="?attr/colorControlNormal" />
            </item>
            ...additional frames...
        </animation-list>
    </transition>
    <transition android:fromId="@+id/on" android:toId="@+id/off">
        <animation-list>
            <item android:duration="15">
                <bitmap android:src="@drawable/btn_check_to_off_mtrl_000" android:tint="?attr/colorControlActivated" />
            </item>
            ...additional frames...
        </animation-list>
    </transition>
</animated-selector>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接