Android中使用Vectors(2)绘制优美的路径动画

随着互联网技术的不断进步,Android的Vector图像的时代已经到来. 在Google的最新支持库v23.2中, AppCompat类已经使用Vector图像, 使得AAR包减少9%, 大约70KB, 惠及所有高版本的应用. 当然我们也可以使用Vector, 瘦身应用. Vector图像是SVG格式在Android的表现形式. SVG图像适应屏幕, 图片较小, 还有很多优点, 参考.

关于Vectors的分析, 主要分为两节:

(1) 使用SVG图像瘦身应用, 参考.

(2) 绘制优美的路径动画, 参考.

本文是第二节, 关于Vector动画.

SDK Manager提示支持库更新

使用Vector动画主要有三个部分: Vector图像, 路径动画, Animated-Vector图像.

本文源码的Github下载地址.

动画

1. Vector图像

SVG格式的图片, 转换为Vector图像资源, 可以使用AS2.0的转换工具, 也可以是在线转换工具, 参考. 图像需要路径(path)样式, 便于绘制, 如

<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="256dp" android:height="256dp" android:viewportHeight="70" android:viewportWidth="70"> <path android:name="heart1" android:pathData="..." android:strokeColor="#E91E63" android:strokeWidth="1"/> <path android:name="heart2" android:pathData="..." android:strokeColor="#E91E63" android:strokeWidth="1"/> </vector>

2. 路径动画

使用属性动画, 控制绘制状态.

<?xml version="1.0" encoding="utf-8"?> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="6000" android:propertyName="trimPathEnd" android:valueFrom="0" android:valueTo="1" android:valueType="floatType"/>

ObjectAnimator的trimPathEnd属性决定绘制path的数量, 其余部分不会绘制, 其取值区间是0到1. duration属性表示持续时间, 6000即6秒.

3. Animated-Vector图像

把Vector图像的路径(path), 应用于路径动画(objectAnimator), 控制绘制.

<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/v_heard"> <target android:name="heart1" android:animation="@animator/heart_animator"/> <target android:name="heart2" android:animation="@animator/heart_animator"/> ... </animated-vector>

4. 显示动画

需要Android 5.0(21)以上版本, 才能使用Vector动画, 即AnimatedVectorDrawable类.

// 只支持5.0以上. private void animateImage() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // 获取动画效果 AnimatedVectorDrawable mAnimatedVectorDrawable = (AnimatedVectorDrawable) ContextCompat.getDrawable(getApplication(), R.drawable.v_heard_animation); mIvImageView.setImageDrawable(mAnimatedVectorDrawable); if (mAnimatedVectorDrawable != null) { mAnimatedVectorDrawable.start(); } } }

AnimatedVectorDrawable的start方法就是动画启动功能.

使用Vector动画比gif动画节省应用资源, 可以给用户更好的体验. 推荐一个有趣的SVG库.

以上所述是小编给大家介绍的Android中使用Vectors(2)绘制优美的路径动画,希望对大家有所帮助!

时间: 2024-08-02 14:59:04

Android中使用Vectors(2)绘制优美的路径动画的相关文章

Android中使用Vectors(2)绘制优美的路径动画_Android

 随着互联网技术的不断进步,Android的Vector图像的时代已经到来. 在Google的最新支持库v23.2中, AppCompat类已经使用Vector图像, 使得AAR包减少9%, 大约70KB, 惠及所有高版本的应用. 当然我们也可以使用Vector, 瘦身应用. Vector图像是SVG格式在Android的表现形式. SVG图像适应屏幕, 图片较小, 还有很多优点, 参考. 关于Vectors的分析, 主要分为两节: (1) 使用SVG图像瘦身应用, 参考. (2) 绘制优美的路

Android中贝塞尔曲线的绘制方法示例代码_Android

       贝塞尔曲线,很多人可能不太了解,什么叫做贝塞尔曲线呢?这里先做一下简单介绍:贝塞尔曲线也可以叫做贝济埃曲线或者贝兹曲线,它由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋.一般的矢量图形软件常利用贝塞尔曲线来精确画出曲线.        上面的介绍中,"线段像可伸缩的皮筋"这句话非常关键,但也特别好理解.至于贝塞尔曲线的详细内容大家可以查阅相关资料.        Android提供的贝塞尔曲线绘制接口        在Android开发中,要实现贝塞尔曲线其实还

Android中贝塞尔曲线的绘制方法示例代码

贝塞尔曲线,很多人可能不太了解,什么叫做贝塞尔曲线呢?这里先做一下简单介绍:贝塞尔曲线也可以叫做贝济埃曲线或者贝兹曲线,它由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋.一般的矢量图形软件常利用贝塞尔曲线来精确画出曲线. 上面的介绍中,"线段像可伸缩的皮筋"这句话非常关键,但也特别好理解.至于贝塞尔曲线的详细内容大家可以查阅相关资料. Android提供的贝塞尔曲线绘制接口 在Android开发中,要实现贝塞尔曲线其实还是很简单的,因为Android已经给我们提供了相关接口,

Android中Activity销毁而绘制UI的子线程未销毁的解决方法

如果我们开发一个需要播放音频的应用,我们都知道播放音频要用到MediaPlayer类,我这里,不需要开启Service,就在本Activity播放音频,当Activity销毁的时候,音频便结束 但是有一个重点,需要即时的变化当前播放的时间 我的思路是,开启一个线程,计算当前音频的剩余播放时间,如果>0 则用Handler循环发送一个消息来更改时间UI Thread tPlay ; tPlay = new Thread(new Runnable() {     @Override     publ

android中使用线程和Timer实现字体闪烁动画

android字体闪烁动画,使用线程和Timer实现 public class ActivityMain extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spark(); } private int clo = 0; public void spark() { final T

请教大神,android中我需要在自定义控件中绘制一个透明的小三角行?

问题描述 请教大神,android中我需要在自定义控件中绘制一个透明的小三角行? 请教大神,android中我需要在自定义控件中绘制一个透明的小三角行,比如我需要在LinearLayout的底部绘制一个透明背景小三角,该怎么绘制呢? 我在绘制的时候将设置成透明背景,绘制小三角不显示,必须要给他设置一个背景才会显示,纠结啊 解决方案 可以定义一个path吧,连接成一个三角形,然后画出来 解决方案二: 让UI给你做一个三角形的透明图 设为背景 解决方案三: path连接成个三角形的话,如果这个自定义

android操作百度地图,绘制自己得图形加到地图中无法准确定位到某个经纬度

问题描述 android操作百度地图,绘制自己得图形加到地图中无法准确定位到某个经纬度,图形是一个长方形,下面有个点对应到某个经纬度,由于图形是按照左上方为起始点,所以需要计算做上方得经纬度,求大神指点 解决方案 解决方案二:百度地图中的经纬度和实际的经纬度之间有偏差,需要转换,你查查百度地图API中对应的方法解决方案三:已经搞定了,谢谢

Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能实例_Android

本文实例讲述了Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能的方法.分享给大家供大家参考,具体如下: 1.布局界面 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pare

位图在android中的是使用有哪些,另外有什么好处

问题描述 位图在android中的是使用有哪些,另外有什么好处 位图在android中哪些地方使用,另外位图有什么好处. 现在仅知道: 1. 在画布上绘制位图 2. 缩放位图 3. 使用Matrix变换位图 解决方案 bitmap一般是处理图片的,复制图片,显示图片都会用到 解决方案二: 位图是对应于矢量图的 详细区别与各自优缺点见以下链接http://zkl-1987.iteye.com/blog/1060902 解决方案三: 位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力