android svg动画框架,Android实现炫酷SVG动画效果
svg是目前十分流行的图像文件格式了,svg严格来说应该是一种开放标准的矢量图形语言,使用svg格式我们可以直接用代码来描绘图像,可以用任何文字处理工具打开svg图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器(如火狐浏览器)来观看。使用svg格式可让你设计激动人心的、高分辨率的Web图形页面。
svg格式具备目前网络流行的jpg和png等格式无法具备的优势:可以任意放大图形显示,但绝不会以牺牲图像质量为代价;可在svg图像中保留可编辑和可搜寻的状态;平均来讲,svg文件比其它格式的图像文件要小很多,因而下载也很快。
我们先来看几张Android上使用SVG的效果图:
从上面的图片看到,如果我们自己来实现这样的特效,非常的麻烦,不过接下来给大家介绍一个开源控件,就可以配合SVG实现这些效果。
首先我们来了解SVG文件的格式,举个例子:
上面的代码很复杂,如果说它们是代码的话,但是我们可以注意到,这种书写方式,有点类似于html,都是使用标签
使用最多的标签是path,也就是路径
有的人也会想到,要实现照片上的动态效果,我们可以使用Android自带的绘图类和函数,复杂的曲线路径,我们可以使用path这个类来制定
那会不会SVG里面的path,其实也是这样,那么我们就可以将SVG中的path,对应到android,然后绘制出来就好了。
SVG里面还有各种标签:
包括line直线,circle圆,rect矩形,eliipse椭圆,polygon多边形,等等
这些只要我们又一个SVG文件,都可以将其转换成java代码
作为一个程序员,我们当然不能手动去做这个工作,那就涉及两个问题,一个是SVG的解析,一个是解析后的绘制
幸运的是,已经有人完成了这个工作,并且在Github上开源 https://github.com/geftimov/android-pathview
这篇文章将作为一个简单的例子,来使用上面的开源控件
为了解析SVG,我们需要将一个androidsvg.jar包含进我们的lib
下面我们来看这个控件的简单使用,作为一个自定义控件,我们只需要在布局文件里面添加
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="#ff0000"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/pathView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:pathColor="@android :color/white"
app:svg="@raw/ironman_white"
app:pathWidth="5"/>
其实app:svg指定了一个SVG文件,我们可以把这个文章放在raw目录下面
然后来看Activity里面:
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final PathView pathView = (PathView) findViewById(R.id.pathView);
// final Path path = makeConvexArrow(50, 100);
// pathView.setPath(path);
pathView.setFillAfter(true);
pathView.useNaturalColors();
pathView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pathView.getPathAnimator().
delay(100).
duration(1500).
interpolator(new AccelerateDecelerateInterpolator()).
start();
}
});
}
private Path makeConvexArrow(float length, float height) {
final Path path = new Path();
path.moveTo(0.0f, 0.0f);
path.lineTo(length / 4f, 0.0f);
path.lineTo(length, height / 2.0f);
path.lineTo(length / 4f, height);
path.lineTo(0.0f, height);
path.lineTo(length * 3f / 4f, height / 2f);
path.lineTo(0.0f, 0.0f);
path.close();
return path;
}
}
看到注释的部分,调用了makeConvexArraw()方法,如果我们没有在xml文件里面指定svg文件,我们也可以在代码中手动指定绘制的路径
让代码跑起来,点击屏幕,于是就实现了以下效果:
就是这么简单,至于这么制作SVG文件,大家可以找美工帮忙,使用ps和ai,可以将图片转换成SVG
源码下载地址:
------------------------------------------分割线------------------------------------------
具体下载目录在 /2015年资料/8月/20日/Android实现炫酷SVG动画效果/
android svg动画框架,Android实现炫酷SVG动画效果相关推荐
- android 天气动画,为app制作炫酷天气动画 – WeatherView
WeatherView 从1.1.0版本开始这个库使用了一个不同的setter结构. WeatherView是一个为app制作一个炫酷天气动画的Android库. Setup Android Stud ...
- android 生成 gif动画,一分钟做出炫酷gif动画 GIF快手for android体验
New应用是牛华网全新打造的一个Android以及iOS应用发现平台,旨在帮助用户发现和推荐更多精品的Android.iOS应用,用专业的视角为用户搜罗品质更高.质量更优的应用,以此来丰富广大用户的移 ...
- 如何利用 Android 自定义控件实现炫酷的动画?|CSDN 博文精选
作者 | u012551350 本文精选自 CSDN 博客,已获作者授权 「知足常乐」,很多人不满足现状,各种折腾,往往舍本逐末,常乐才能少一分浮躁,多一分宁静.近期在笔者身上发生了许多事情,心态也发 ...
- 六、Android中的Animation与炫酷开场动画
本文目录 一.属性动画和MaterialDesign动画 属性动画和MaterialDesign动画相关的内容,已经在前面写过,具体查看https://www.jianshu.com/p/15d256 ...
- 【Android珍藏】推荐10个炫酷的开源库
前言 技术群里面经常有人问到一些炫酷的UI效果实现方法,有时候我都是给一个相同或者相似效果的Github链接,有同学私信给我说,怎么这些效果你都能找到?你是怎么搜索的,或者有其他什么秘方?会利用Goo ...
- android 炫酷进度条,Android打造炫酷进度条效果
本文实例为大家分享了Android炫酷进度条效果的具体代码,供大家参考,具体内容如下 HorizontalProgressbarWithProgress的代码 import android.conte ...
- iOS动画开发之五——炫酷的粒子效果
iOS动画开发之五--炫酷的粒子效果 在上几篇博客中,我们对UIView层的动画以及iOS的核心动画做了介绍,基本已经可以满足iOS应用项目中所有的动画需求,如果你觉得那些都还不够炫酷,亦或是你灵光一 ...
- html css图片展开动画,8个实用炫酷的HTML5图片动画应用
本文作者html5tricks,转载请注明出处 近期我们发布了不少关于 1.CSS3/jQuery实现移动端滑动图片层叠效果 这是一款基于jQuery和CSS3的图片层叠插件,这和我们之前介绍的CSS ...
- 如何做一个炫酷的动画网站-css实现图片上下浮动效果
目前网站制作技术已经非常成熟.所以要实现一个炫酷的动画网站还是非常容易,现在通过js和css就都能实现.直接css就能实现各种效果,下面我们来通过一个小动画看看如何用css来实现让你的网站图片上下浮动 ...
最新文章
- linux内核oom,linux OOM killer分析
- C#编程中的crc16校验
- python怎么样处理excel教程_python处理excel教程是什么
- python 列表操作-切片
- 第六届蓝桥杯【省赛试题 7】牌型种数 - i 逆天耗子 - CSDN 博客
- Vue「六」前端路由、vue-router
- inner join 与 left join 之间的区别
- Opera R3 将使用新的用户界面
- ansible获取服务器信息,ansible监控服务器资源使用
- UVa 10491 - Cows and Cars(全概率)
- od反汇编linux,新手学习反汇编之OD寻找功能call
- 北理校园网省流攻略之下载篇
- oracle单列转行,oracle 两种列转行的方式
- 2019各大互联网公司年会盘点
- java tif合成_JAI 多图片合成TIF格式
- 武汉科技大学计算机生命与科学周海,湖北双胞胎周海周洋:为了母亲,一个放弃清华,一人放弃中科院...
- c++ 实现雷霆战机可视化小游戏
- 麒麟系统开启关闭防火墙服务
- coffeescript语法入门
- 第十六届全国大学生智能车竞赛(安徽赛区)信标组蒟蒻的想法
热门文章
- 什么是RS485总线?
- 小程序高级电商前端第1周走进Web全栈工程师<二>
- 996M11鹅厂这些互联网行业“黑话”,你知多少?
- 那些令人发燥的JAVA虚引用
- Mybatis-Plus 新手入门,一篇足以
- js判断当前浏览器的环境是微信、pc、还是手机端非微信环境
- 计算机领域nt=p,计算机考试范题-pwerpoint操作.doc
- BDCN:Bi-Directional Cascade Network for Perceptual Edge Detection论文解读和代码实现
- 美国网站直接shopping之经验总结
- 关于 DRM 中 DUMB 和 PRIME 名字的由来