安卓开发中矢量图的绘制及动画

安卓开发中矢量图的绘制及动画,第1张

矢量图也称为面向对象的图像或绘图图像,是根据几何特性来绘制的图形,在安卓开发中可以使用失量图代替原来的图片资源,矢量图具有占用空间小和可以随意缩放但不失真的优势,在我的多个项目中都有运用。

通过学习和实践,我总结了一些与矢量图相关的知识,方便今后更好的使用矢量图,同时也可以供大家查阅参考。

绘制矢量图之前需要先定义画布的宽高,后续的绘制效果都展示在这个画布上。在绘制过程中需要输入的坐标就是这个画布上的点。

安卓的矢量图常见于 drawable 文件夹下,是一个xml文件,由 vector 标签包裹,在 vector 标签中可包含多个 path 标签,依次叠加显示。

在矢量图中最重要的就是 path 属性,图像的样式就是由 path 属性中的数据绘制而成,这些数据由不同的命令组合而成,下面就介绍一些矢量图的绘制命令。

将前面的命令示例连接起来就可以生成一个完整的图像,它大概长这个样子:

画布的尺寸为500x500,图上的顶点是200,10的位置,也是我们开始作图的起点。通过这个图片可以更好的理解每一个绘图命令。

安卓中可以为矢量图添加动画效果,这样用户就可以看到一个动的图片,可以一定程度的提高app的交互效果。矢量图动画是图形内部的变化,可以做到View动画无法实现的效果。

这种动画针对的是矢量图中 path 字段的值,通过连续改变 path 字段的值而达到产生动画的效果。

注:pathData动画所需的AnimatedVectorDrawable最低要求API等级为25

实现一个矢量图动画需要以下几步:

1. 准备起始状态和结束状态的矢量图两张。

2. 创建动画配置文件。

3. 创建动画矢量图文件。

4. 启动动画。

基于这种要求,我准备了两个矢量图:

控制动画运行的是一个 objectAnimator ,此处把 objectAnimator 包裹在一个 set 中也是可以的,说白了就是执行这个动画文件。

duration 用来指定动画的持续时间。

propertyName 中的pathData指的就是矢量图中的pathData。

valueFrom 和 valueTo 一个是起始路径,一个是结束路径,可以想到,这个动画就是在持续修改pathData,从而达到展示动画的效果。而 valueFrom 和 valueTo 的值是直接从先前准备的矢量图中复制过来的,所以那个结束状态的矢量图中唯一有用的东西就是pathData属性,没有那个文件也无所谓。

valueType 这里必须填写pathType,这是专门用来计算path的类型。

此时,文件的最外层由 animated-vector 包裹,同时需要添加一个 drawable 参数,这个 drawable 用于指定动画应用于那个矢量图上,我们是要从未启用状态变成启用状态,所以是在未启用状态开始执行动画,在动画未开始的时候展示的也是未启用状态。此处我们指定为 @drawable/icon_filter_off 。

内部有一个 target 标签,这个标签可以有多个,分别对应不同的动画,但同一个 path 只能应用一个动画。

name 用于指定要执行动画的 path 。status正是我们为右下角小图标path设置的名称。

animation 用于指定需要执行的动画。此处引用我们刚刚创建的动画资源 @animator/filter_turn_on 。

当我们创建好动画矢量图之后,页面中引用的资源就不再是之前的静态矢量图了,需要把 ImageView 的图片替换成 @drawable/animated_filter_on

经过这么多的步骤,我们终于做出了一个矢量图动画,而且是一个。说实话,有点累,然而我这个状态切换的动画一套就要两个,所以我又加了一个回来的动画和对应的动画矢量图,一共六个文件,完成了筛选状态的两个切换动画。这还是比较简单的实现方式,对于两种状态切换的动画,网上还有一种使用selector的方式,这种方式更麻烦,而且使用方法并没有简单一些,所以我的选择是在需要切换状态的时候更改 ImageView 的图片资源,然后再执行动画。

trimPath动画相当于是改变了矢量图绘制的位置,是从头开始画还是从80%的位置开始画,然后再动态的修改这个百分比,从而达到动画的效果。理解起来倒不是很难。

先放一个我使用trimPath动画做的loading效果,这个动画效果被我用在LoadingDialog中,在界面加载的时候会重复播放这个动画。

android:name="load" 不用多说,这个是我们做动画时路径名称。这里为了让心电图路径更清晰,我设置了描边宽度为20( android:strokeWidth="20" ),同时还要设置描边的颜色才能展示出来。后面的 android:trimPathStart="0" 和 android:trimPathEnd="0" 是本次trimPath动画的重点。

这两个属性都设置为0是因为动画的起始帧都为0,然后通过 objectAnimator 慢慢把这两个属性变为1,这样一个慢慢增长的动画就形成了。

网络上一个横线变成搜索按钮的示例是将这两个属性分别应用到了两个 path 上,而我是将两个属性同时应用到一个 path 上,原理都是一样的。

在配置文件中,我将两个动画都设置为3秒且循环播放,起始点的动画慢于终点的动画1秒,达到只画中间1秒间隔线段的效果。和路径变形动画的区别是 android:valueType="floatType" ,我们只需要计算从0到1的数字,然后应用到 trimPathStart 和 trimPathEnd 字段上。至此,loading的动画就配置完了。

这一步已经没什么可说的了,就是将指定的矢量图中指定的路径设置一个指定的动画。

通过几天的学习,已经大致掌握了矢量图的展示及动画的制作,但这一套流程下来成本比较高,是程序员方式的动画制作流程。除了制作成本,创意成本也是相当高的,一个好的创意能极大的提升用户体验,而好多时候我们的创意能够被实现也是很困难的。希望以后能实现一些更好的效果,让用户使用起来更舒服。

SVG—最简单的SVG动画

SVG路径(path)中的圆弧(A)指令的语法说明及计算逻辑

Android中的矢量图

Android高级动画(2)

需要添加代码按钮才有动效。在Android音乐通知布局中,createCircularReveal方法创建了一个Animator,设置动画的中心位置(cx,cy),起始半径(radius)、结束半径(0),在动画播放之前,设置了一个事件监听器,布局按钮就有动画播放效果了。

问题一:什么软件可以让安卓手机壁纸动起来啊? ...直接设置动态壁场就可以啦..就是在屏幕主界面设置的。长按一下选择动态壁纸就可以了。不过相对耗电量会高点点

问题二:怎样才能使手机壁纸动起来 下载动态图片壁纸,安装好了以后照一张你喜欢的图片,设为壁纸就行了

问题三:android 怎么让live wallpaper动态壁纸运行起来 对于Android 2.1来说Live Wallpapers动态壁纸的加入为Android桌面加入了更好的动态效果。如何开发一个Android动态桌面呢? 下面Android123给大家一个详细的步骤创建属于你自己的Live Wallpaper吧。

1. 首先我使用Eclipse创建一个标准的Android工程这里package name我们使用.android123.cwj,然后进入工程的/res/文件夹,删除layout这个文件夹,当然里面的main.xml也会被删除的,对于Live Wallpaper来说传统的布局文件是不需要的。

2. 类似AppWidget一样,我们可以加入动态壁纸的设置界面,我们在/res/文件夹中新建一个名为xml的文件夹,新建一个utf8编码的xml文件,名为livewallpaper.xml,内容为

这里我们可以看到上面的节点名为wallpaper,而设置的界面为 .android123.cwj.LiveWallpaperSettings 这个Activity,而在添加动态壁纸时显示图标为/res/drawable/icon 这个文件,同时我们再创建一个xml文件用于LiveWallpaperSettings这个Activity的布局,我们起名为livewallpaper_settings.xml内容为

>

问题四:安卓怎么把GIF图片设置成动态桌面 这个是没办法的,GIF只是一张会动的图片而已。

安卓中的动态壁纸不是简单的GIF图片,而是一个安装软件,是可以跟用户进行一些交互的,比如水面落叶那个动态壁纸,你用手点击,水面会起波纹,这不是简单的GIF图片。

现在网上有很多动态壁纸,都很有趣很漂亮,楼主可以去下载嘛,没必要非抓着GIF图片不放。既然玩安卓动态壁纸,就不要再拿GIF来冒充了嘛!

希望对楼主有所帮助!

问题五:安卓手机怎么设置从网上下载的动态墙纸 方法一:1.在手机浏览器里,进去百度,搜索“动态壁纸”。

2.选择合适的壁纸,然后下载到手机上。

3.在手机图库里打开图片。点击手机右上角或者屏幕右下角的虚拟按键,就可以看到“把图片设置为壁纸”功能。

方法二:1.偿机下载“安卓动态壁纸”软件。安装在手机上。

2.打开软件。就会看到各种类别的动态壁纸。

3.选择喜欢的壁纸。然后点击下载。

4.下载完成之后选择设为壁纸就可以了。

问题六:安卓手机如何将gif图片设为桌面壁纸 GIF设成壁纸也不会动,你下下载动态壁纸才可以

问题七:安卓手机怎么设置动态壁纸 不同的手机还是有不同的 *** 作的

一般主流都是在设置 显示 壁纸 个性化 之类的地方

如果壁纸选项下没找到动态选项的话,可以翻到最后一项的其他里找找看。

问题八:安卓手机动态壁纸如何设置 内置动态壁纸郸置

1、先确保你的手机为安卓4.0系统。

2、然后在你手机的[菜单]-[壁纸]-[动态壁纸],找到设置的壁纸,设置内点击[启动前景动画效果]即可。

3、现在点击[更新频率]选择所需的更新频率,并将壁纸设置为当前壁纸。

apk格式的动态主题安装

1、把你喜欢的

安卓手机主题

保存到我手机的SD卡中。

2、然后再在手机SD卡中找到你下载过来的安卓主题

3、然后点击.apk主题这时系统就会自动启动安装程序进行安装。

问题九:安卓手机如何自定义设置动态壁纸 30分 1、下载安装AnimGIF Live Wallpaper,值得注意的是,安装成功之后,在应用程序列表是无法找到它的图标,找到方式看下图:2、进入AnimGIF Live Wallpaper,点击左下方的设置按钮,选择“Set GIF Image”按钮即进入文件目录浏览,找到需要设置为壁纸的GIF动图,点击设置壁纸即可。注意事项:1、GIF动图体积不要过大,尽量不要超过1M,否则会出现卡顿、掉帧等播放问题;2、设置动图为壁纸后,会导致耗电量的增加。

问题十:安卓手机动态壁纸怎么设置 不同的手机还是有不同的 *** 作的

一般主流都是在设置 显示 壁纸 个性化 之类的地方

如果壁纸选项下没找到动态选项的话,可以翻到最后一项的其他里找找看。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11842524.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存