Android 将图标变成另一个图标

2024-04-07

如何实现一个图标转变为另一个图标的动画,例如汉堡变成箭头(导航抽屉)或铅笔变成十字(收件箱)?我怎样才能存档这个动画?


图标动画可以使用以下方式实现animated-vector http://developer.android.com/reference/android/graphics/drawable/AnimatedVectorDrawable.html

首先将您的图标定义为矢量绘图。例如,让我们拿起一个勾来交叉动画,如图所示here https://github.com/udacity/ud862-samples/blob/master/TickCross/。我们将制作动画ic_tick to ic_cross.

ic_cross.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="120dp"
        android:height="120dp"
        android:viewportWidth="@integer/viewport_width"
        android:viewportHeight="@integer/viewport_height">

    <group
        android:name="@string/groupTickCross"
        android:pivotX="@integer/viewport_center_x"
        android:pivotY="@integer/viewport_center_y">

        <path
            android:name="@string/cross"
            android:pathData="M6.4,6.4 L17.6,17.6 M6.4,17.6 L17.6,6.4"
            android:strokeWidth="@integer/stroke_width"
            android:strokeLineCap="square"
            android:strokeColor="@color/stroke_color"/>

    </group>

</vector>

ic_tick.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="120dp"
        android:height="120dp"
        android:viewportWidth="@integer/viewport_width"
        android:viewportHeight="@integer/viewport_height">

    <group
        android:name="@string/groupTickCross"
        android:pivotX="@integer/viewport_center_x"
        android:pivotY="@integer/viewport_center_y">

        <path
            android:name="@string/tick"
            android:pathData="M4.8,13.4 L9,17.6 M10.4,16.2 L19.6,7"
            android:strokeWidth="@integer/stroke_width"
            android:strokeLineCap="square"
            android:strokeColor="@color/stroke_color"/>

    </group>

</vector>

接下来我们为每个步骤创建动画师。valueFrom告诉动画的起点valueTo是动画的最终成品。interpolator是插值的类型,您可以在 Android 文档中找到更多信息。duration指定动画的持续时间。

tick_to_cross.xml

<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="pathData"
    android:valueFrom="M4.8,13.4 L9,17.6 M10.4,16.2 L19.6,7"
    android:valueTo="M6.4,6.4 L17.6,17.6 M6.4,17.6 L17.6,6.4"
    android:duration="@integer/duration"
    android:interpolator="@android:interpolator/fast_out_slow_in"
    android:valueType="pathType"/>

现在,使用动画矢量,我们对矢量进行动画处理。这里<target android:name指定必须执行动画的目标,以及android:animation告诉动画要完成。

avd_tick_to_cross.xml

<animated-vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_tick">

    <target
        android:name="@string/tick"
        android:animation="@animator/tick_to_cross" />

</animated-vector>

如何在可绘制矢量之间设置动画有一些限制,但如果您清楚地了解要为什么设置动画以及动画应该如何进行,则可以通过某种方式对它们进行修改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 将图标变成另一个图标 的相关文章

  • 在应用程序简历中隐藏软键盘

    我有一个 Android 应用程序 使用 Xamarin 用 C 编写 我已将应用程序简化为包含 TextView 和用于横幅广告的 Google admod AdView 的 LinearLayout 我不希望软键盘出现在应用程序中 这不
  • GCM 向主题发送消息:TOO_MANY_TOPICS 错误

    以前 GCM 每个应用程序有 100 万个主题订阅的限制 我发现他们现在已经取消了这一限制 基于发布 订阅模型 主题消息支持 每个应用程序无限订阅 https developers google com cloud messaging to
  • 如何将安卓手机从睡眠状态唤醒?

    如何以编程方式将 Android 手机从睡眠状态唤醒 挂起至内存 我不想获取任何唤醒锁 这意味着手机在禁用 CPU 的情况下进入 真正的 睡眠状态 我想我可以使用某种RTC 实时时钟 机制 有人有例子吗 Thanks 为了让Activity
  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • Android 原理图内容提供程序库配置?

    Jake Wharton 在最近的一次演讲中提到了这个库 它看起来是避免大量样板文件的好方法 所以我尝试了一下 但没有任何成功 https github com SimonVT schematic https github com Simo
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • 更新到材质 1.2.0 后,材质按钮上缺少圆角半径属性

    这是我的材质按钮代码
  • Android 启动器快捷方式

    我制作了一个简单的打卡 打卡时钟应用程序 我想向用户添加在主屏幕上创建快捷方式的选项 该快捷方式将切换应用程序的状态 超时 超时 但我根本不希望此快捷方式在屏幕上打开应用程序 这是我的 setupShortcut private void
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少

随机推荐

  • 错误:使用 Sass 的 Angular 组件中未定义变量

    我遇到此错误 看起来我没有将变量导入到组件中 但这是我的style scss You can add global styles to this file and also import other style files Foundati
  • 自定义文件中的 AppSettings

    我正在努力处理 NET 2 0 中的配置和设置类 如果以下内容包含在名为的文件中app config
  • SceneKit 修改 3D 对象并导出文件

    在我的应用程序中 我使用 SceneKit Framework 在 SCNView 中显示 3D 对象 并导出修改后的文件 并进行一些小的更改 如颜色 温度等 但在将其导出到文档文件夹后 我得到了原始文件 在这里我可以显示 3D 对象并对其
  • 将 GCC 编译器安装到 Docker 容器上

    我正在尝试将 mono 包安装到 Docker 容器上 但是 mono 需要 git autoconf libtool automake build essential mono devel gettext 包 我遇到的问题是 libtoo
  • 在 Rails ActiveRecord 验证期间更改或更新属性值

    Summary 我正在尝试更改属性的值within一个习俗ActiveModel EachValidator验证器 给出以下原型 def validate each record attribute value 试图设置value thin
  • ldd 输出静态链接到共享库

    我正在尝试创建一个共享库 libddv3djava so 我编译 libddv3djava so 的源代码 如下所示 Programming intellijprojects ddv3dbindingstest src g c Wall W
  • Numpy `ValueError:操作数无法与形状一起广播...` [重复]

    这个问题在这里已经有答案了 我使用 python 2 7 并尝试对从 1 00000000 到 3 0000000008 的一些随机数据进行预测 我的数组中有大约 196 个项目 但出现错误 ValueError operands coul
  • 在结构体中定义宏背后的逻辑是什么?

    正如标题所示 我质疑在结构体中定义宏的原因 我经常在网络编程中看到这种方法 例如以下代码片段 struct sniff tcp u short th sport source port u short th dport destinatio
  • WPF 启动屏幕直到 Windows 结束加载

    我有一个应用程序在窗口加载时消耗大量时间 在 Window load 事件中 我从数据库读取一些控件的状态和名称 我想做一个启动画面 该启动画面将在窗口完全加载后结束 我尝试过这个例子http www codeproject com KB
  • PHP 5:const 与 static

    在 PHP 5 中 使用和使用有什么区别const and static 分别什么时候合适 以及起什么作用public protected and private玩 如果有的话 在类的上下文中 静态变量位于类范围 而不是对象 范围内 但与
  • 通过删除代码注释来优化网站?

    我想知道从 php js css html 和类似文件中删除代码注释是否有任何 明显的 性能改进 大多数情况下不是 现代 CPU 的速度非常快 最显着的改进是下载速度的速度 删除通过网络发送到浏览器的任何不必要的注释 缩小 CSS Java
  • Objective-C TRUE/FALSE 与 true/false

    在 Objective C 中 我们有不同的关键字来评估布尔值 我们有YES NO TRUE FALSE and c99 true false 我明白BOOL vs bool很好 这篇文章很好地解释了这些差异 http www bigner
  • 是否有用于读取血压数据的 Google Fit REST API?

    谷歌文档提到了专门写入血压数据 https developers google com fit scenarios write bp data https developers google com fit scenarios write
  • MSI 与 nuget 包:哪个更适合持续交付?

    我们来讨论一下下面的话题 目前有一个应用程序正在使用熟悉的 xcopy 方法进行部署 这种方法使得管理依赖项 文件更新等变得困难 有一个想法是在一些软件包的帮助下开始应用程序部署 就像在 Linux 中借助RPM http en wikip
  • 检查 Qunit 是否正确加载图像

    我正在尝试验证图像URLs with Qunit通过将 URL 设置为src测试图像的属性并检查error事件处理程序是否顺利 到目前为止我所拥有的是 test image function var test image test imag
  • rstudioapi AskForPassword 不屏蔽用户名输入

    有没有办法禁用 rstudioapi askForPassword 弹出窗口中的屏蔽 以便用户可以输入他们的用户名 我正在构建一个可以与我的团队共享的函数 用于使用 ROracle pacakge 连接到我们的 Oracle 数据库实例 目
  • 为什么在传递给参数时不能隐式构造一个给定合适构造函数的对象?

    在下面的示例中 为什么我不能简单地传递一个string to the printFoo include
  • PHP REST API 路由

    我一直在研究 API 并为我们正在进行的项目开发 REST API API 只接受来自一个 JSON 格式的源的连接 我理解这一点很好 如果理解了所说的大部分内容 但是我不明白第三个代码示例以及路由信息的去向 他们提供的例子是 data R
  • 暴露 angular.js 中的 JavaScript 错误

    在某些情况下 角度引擎不会输出原始数据javascript错误 例如 myapp directive helloWorld function return scope restrict AE template p Hello World m
  • Android 将图标变成另一个图标

    如何实现一个图标转变为另一个图标的动画 例如汉堡变成箭头 导航抽屉 或铅笔变成十字 收件箱 我怎样才能存档这个动画 图标动画可以使用以下方式实现animated vector http developer android com refer