首页 > 其他分享 >PathView实现炫酷SVG动画

PathView实现炫酷SVG动画

时间:2023-04-12 21:02:28浏览次数:48  
标签:lineTo SVG pathView length 炫酷 PathView 0.0 path



解析SVG,需要将一个androidsvg.jar包含进libs

https://github.com/geftimov/android-pathview

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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">
 
    <com.example.kaiyicky.myapplication.PathView
        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"/>
</LinearLayout>


app:svg指定了一个SVG文件,我们可以把这个文章放在raw目录下面



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

标签:lineTo,SVG,pathView,length,炫酷,PathView,0.0,path
From: https://blog.51cto.com/u_5454003/6186229

相关文章

  • HTML5 Canvas和SVG的区别
    Canvas主要是用笔刷来绘制2D图形的。SVG主要是用标签来绘制不规则矢量图的。相同点:都是主要用来画2D图形的。区别:SVG画的是矢量图,Canvas画的是位图;SVG节点过多时渲染慢,Canvas性能更好一点,但写起来更复杂;SVG支持分层和事件,Canvas不支持,但是可以用库实现。......
  • 移动端,cavans和svg绘制进度图
    先看效果:起初是用cavans绘制的结果会模糊,倍数绘制再缩小也是模糊,最后换成了svg绘制:cavans:global.progressChart={template:`<divclass="process-chart-box"><canvasid="progressChart">当前浏览器不支持canvas</canvas><imgsrc......
  • 让Window可以预览查看Svg图标的解决方法
    让Window可以预览查看Svg图标的解决方法下载插件包下载地址:https://github.com/maphew/svg-explorer-extension/releases也可以直接下载安装包https://github.com/tibold/svg-explorer-extension/releases/download/v1.1.0/svg_see_x64.exe解压并安装下载后解压svg-e......
  • echarts export three types picture: png、html、svg
    import'./styles.css'importechartsfrom'echarts'import{saveAs}from'file-saver'importJSPDFfrom'jspdf'import{init}from'canvas-to-blob'init(......
  • SVG、Canvas、WebGL对比
    SVG使用XML描述2D图形SVG中的元素和HTML元素一样,在输出图形前需要经过浏览器引擎的解析、布局计算和生成DOM树(SVG元素太多时非常消耗性能),可以添加事件SVG对象的属性发......
  • svg基础及示例
    SVG可缩放矢量图形(ScalableVectorGraphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。SVG是W3C制定的一种新的二维矢量图形格式,也是规范中的网络矢量......
  • 前端切图之svg图标的复用基于defs和use 亲测有用
    切图网长期致力于web前端开发外包服务,而我们也关注到现在图标很多时候采用svg更多一点,然后图标字体文件已经提供了很多种类的图标,不过采用svg图标可以自行选择更符合、更好......
  • 30 个免费 icon 下载网站推荐:图标、SVG、矢量图等使用指南
    30个免费icon下载网站推荐:图标、SVG、矢量图等使用指南图标无版权免费素材罗杰摩尔・2021-09-01人的想像力无远弗届,就如我们提供你的免费icon网站使用也几乎没有......
  • iOS借用WKWebView将svg转码为png
    #import"WKSVGConvert.h"#import<WebKit/WebKit.h>@interfaceWKSVGConvert()<WKNavigationDelegate>@property(nonatomic,strong)WKWebView*webView;@prop......
  • 【WPF】在xaml 中引用外部 程序间中图片或样式资源(SVG)
     在xaml中引用外部程序间中图片或样式资源(SVG)一、创建资源程序集1创建一个叫“IconPacks”C#类库程序集   删除自动生成的Class1.cs文件添加一个Themes文......