Android中使用svg

1.svg中一般用在js网页中的一种图片

在Android中如何使用呢。

下面是一个链接下载后可以在布局中使用svg

http://pan.baidu.com/s/1nu92kYH

这是一个自定义的svgview通过他可以很好的使用svg文件

使用方法如下:

可以将svg文件放在raw文件夹中然后:

    <com.example.administrator.svg2.PathView
        android:layout_width="150dp"
        android:layout_height="150dp"
        app:pathColor="@android:color/black"
        app:svg="@raw/ironman"
        app:pathWidth="2dp"
        android:id="@+id/pathview"/>
也可以在代码中使用:

    pathView = ((PathView) findViewById(R.id.pathview));
        SvgPathParser svgPathParser = new SvgPathParser();
        try {
            Path path = svgPathParser.parsePath("M13,33c0.88,0.88,2.75,1.82,5.25,1.75c8.62-0.25,20-2.12,29.5-4.25c1.51-0.34,4.62-0.88,6.62-0.5");
            Log.e( "onCreate: ","111" );
            Path path1 = svgPathParser.parsePath("M31.75,17.62c0.88,1,1.82,3.26,1.38,5.25C29.38,39.62,26.88,61,28,76.5c0.41,5.7,1.88,10.88,3.38,13.62");
            Log.e( "onCreate: ","111222" );
            Path path2 = svgPathParser.parsePath("M47.62,44.12c0.75,1.12,1.16,4.39,0.5,6.12C43.5,62.5,36.88,74,22.75,86c-6.86,5.83-15.88,3.75-16.25-8.38C6.16,66.75,19.88,54.5,38.88,50.88c12.42-2.37,27,1.38,30.5,12.75C73.43,76.81,65.62,90,48.5,94.12");
            Log.e( "onCreate: ","111222333" );
            lists.add(path);
            lists.add(path1);
            lists.add(path2);
            path1111 = new Path();
            path1111.addPath(path);
            path1111.addPath(path1);
            path1111.addPath(path2);
        changpath(path);
        changpath(path1);
        changpath(path2);
           // lists.add(path1111);
        } catch (ParseException e) {
            e.printStackTrace();
        }
      // Path pathn= makeConvexArrow(109,109);
        pathView.setPaths(lists);

        //  pathView.setPath(makeConvexArrow(109,109));
        pathView.setFillAfter(true);
        pathView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
         /*       pathView.getPathAnimator().
                        //pathView.getSequentialPathAnimator().
                                delay(100).
                        duration(1500)
                    //    .interpolator(new AccelerateDecelerateInterpolator())
                      .start()
                ;*/
                PathView.AnimatorSetBuilder builder=new PathView.AnimatorSetBuilder(pathView);
                builder.start();

            }
        });

        pathView.setPercentage(0.5f);

    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;
    }
也可以对转换成path的svg进行缩放:


   private void changpath(Path path) {
        Matrix matrix=new Matrix();
        matrix.setScale(4,4);
        path.transform(matrix);
    }

就可以在项目中按照自己的需要进行缩放大小了。


其中在代码中设置svg的路径一般都是放在数据库中导出后然后使用进行matrix变换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值