将 Android 矢量绘图转换为启动器图标 PNG

2024-01-24

我已经将 Android 启动器图标制作为矢量,但我发现我应该使用 PNG 而不是矢量(XML)。如何将我的矢量图像转换为 PNG 作为启动器图标。

如果有帮助的话,这是矢量:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="100dp"
    android:height="100dp">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
               android:shape="oval">
            <solid
                android:color="#5FB0C9"/>
            <size
                android:width="100dp"
                android:height="100dp"/>
            <stroke
                android:width="5dip"
                android:color="#3DA8C9"/>
        </shape>
    </item>
    <item
        android:gravity="center">
        <vector
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:width="60dp"
            android:height="60dp"
            android:viewportHeight="100.0"
            android:viewportWidth="100.0">
            <path
                android:fillColor="#2c819b"
                android:pathData="M72.4,3.5c-2,0 -3.9,0 -5.9,0c-4.5,0 -7,3.4 -7.5,7.5c-0.9,7.3 -1.8,14.6 -2.7,21.9c2.5,-2.5 5,-5 7.5,-7.5c-7.8,-0.2 -15.6,-0.3 -23.3,-0.5c2.5,2.5 5,5 7.5,7.5c0.9,-7.1 1.8,-14.3 2.7,-21.4c0.5,-4.1 -3.8,-7.5 -7.5,-7.5c-2,0 -3.9,0 -5.8,0c-4.5,0 -7,3.4 -7.5,7.5c-0.9,7.1 -1.8,14.2 -2.7,21.3c2.5,-2.5 5,-5 7.5,-7.5c-7.1,-0.2 -14.3,-0.3 -21.4,-0.5c-3,-0.1 -6.8,2.3 -7.2,5.5c-0.3,1.9 -0.6,3.9 -0.8,5.8c-0.7,4.8 1.9,9.4 7.2,9.5c7.2,0.2 14.4,0.3 21.5,0.5c-2.5,-2.5 -5,-5 -7.5,-7.5c-1,7.7 -1.9,15.4 -2.9,23.2c2.5,-2.5 5,-5 7.5,-7.5c-7.3,-0.2 -14.7,-0.3 -22,-0.5c-3,-0.1 -6.8,2.3 -7.2,5.5c-0.3,1.9 -0.6,3.9 -0.8,5.8c-0.7,4.8 1.9,9.4 7.2,9.5c7.4,0.2 14.8,0.3 22.2,0.5c-2.5,-2.5 -5,-5 -7.5,-7.5c-0.9,7.3 -1.8,14.7 -2.8,22c-0.5,4.1 3.8,7.5 7.5,7.5c1.9,0 3.9,0 5.8,0c4.5,0 7,-3.4 7.5,-7.5c0.9,-7.3 1.8,-14.6 2.7,-21.9c-2.5,2.5 -5,5 -7.5,7.5c7.8,0.2 15.6,0.3 23.3,0.5c-2.5,-2.5 -5,-5 -7.5,-7.5c-0.9,7.1 -1.8,14.3 -2.7,21.4c-0.5,4.1 3.8,7.5 7.5,7.5c2,0 3.9,0 5.8,0c4.5,0 7,-3.4 7.5,-7.5c0.9,-7.1 1.8,-14.2 2.7,-21.3c-2.5,2.5 -5,5 -7.5,7.5c7.1,0.2 14.3,0.3 21.4,0.5c3,0.1 6.8,-2.3 7.2,-5.5c0.3,-1.9 0.6,-3.9 0.8,-5.8c0.7,-4.8 -1.9,-9.4 -7.2,-9.5c-7.2,-0.2 -14.4,-0.3 -21.5,-0.5c2.5,2.5 5,5 7.5,7.5c1,-7.7 1.9,-15.4 2.9,-23.2c-2.5,2.5 -5,5 -7.5,7.5c7.3,0.2 14.7,0.3 22,0.5c3,0.1 6.8,-2.3 7.2,-5.5c0.3,-1.9 0.6,-3.9 0.8,-5.8c0.7,-4.8 -1.9,-9.4 -7.2,-9.5c-7.4,-0.2 -14.8,-0.3 -22.2,-0.5c2.5,2.5 5,5 7.5,7.5c0.9,-7.3 1.8,-14.7 2.8,-22C80.4,6.9 76.1,3.5 72.4,3.5c-4.5,0 -7,3.4 -7.5,7.5c-0.9,7.3 -1.8,14.7 -2.8,22c-0.5,4.1 3.8,7.4 7.5,7.5c7.4,0.2 14.8,0.3 22.2,0.5c-2.4,-3.2 -4.8,-6.3 -7.2,-9.5c-0.3,1.9 -0.6,3.9 -0.8,5.8c2.4,-1.8 4.8,-3.7 7.2,-5.5c-7.3,-0.2 -14.7,-0.3 -22,-0.5c-4.5,-0.1 -7,3.5 -7.5,7.5c-1,7.7 -1.9,15.4 -2.9,23.2c-0.5,4.1 3.8,7.4 7.5,7.5c7.2,0.2 14.4,0.3 21.5,0.5c-2.4,-3.2 -4.8,-6.3 -7.2,-9.5c-0.3,1.9 -0.6,3.9 -0.8,5.8c2.4,-1.8 4.8,-3.7 7.2,-5.5c-7.1,-0.2 -14.3,-0.3 -21.4,-0.5c-4.5,-0.1 -7,3.5 -7.5,7.5c-0.9,7.1 -1.8,14.2 -2.7,21.3c2.5,-2.5 5,-5 7.5,-7.5c-2,0 -3.9,0 -5.8,0c2.5,2.5 5,5 7.5,7.5c0.9,-7.1 1.8,-14.3 2.7,-21.4c0.5,-4.1 -3.8,-7.4 -7.5,-7.5c-7.8,-0.2 -15.6,-0.3 -23.3,-0.5c-4.5,-0.1 -7,3.5 -7.5,7.5c-0.9,7.3 -1.8,14.6 -2.7,21.9c2.5,-2.5 5,-5 7.5,-7.5c-1.9,0 -3.9,0 -5.8,0c2.5,2.5 5,5 7.5,7.5c0.9,-7.3 1.8,-14.7 2.8,-22c0.5,-4.1 -3.8,-7.4 -7.5,-7.5c-7.4,-0.2 -14.8,-0.3 -22.2,-0.5c2.4,3.2 4.8,6.3 7.2,9.5c0.3,-1.9 0.6,-3.9 0.8,-5.8c-2.4,1.8 -4.8,3.7 -7.2,5.5c7.3,0.2 14.7,0.3 22,0.5c4.5,0.1 7,-3.5 7.5,-7.5c1,-7.7 1.9,-15.4 2.9,-23.2c0.5,-4.1 -3.8,-7.4 -7.5,-7.5c-7.2,-0.2 -14.4,-0.3 -21.5,-0.5c2.4,3.2 4.8,6.3 7.2,9.5c0.3,-1.9 0.6,-3.9 0.8,-5.8c-2.4,1.8 -4.8,3.7 -7.2,5.5c7.1,0.2 14.3,0.3 21.4,0.5c4.5,0.1 7,-3.5 7.5,-7.5c0.9,-7.1 1.8,-14.2 2.7,-21.3c-2.5,2.5 -5,5 -7.5,7.5c2,0 3.9,0 5.8,0c-2.5,-2.5 -5,-5 -7.5,-7.5c-0.9,7.1 -1.8,14.3 -2.7,21.4c-0.5,4.1 3.8,7.4 7.5,7.5c7.8,0.2 15.6,0.3 23.3,0.5c4.5,0.1 7,-3.5 7.5,-7.5c0.9,-7.3 1.8,-14.6 2.7,-21.9c-2.5,2.5 -5,5 -7.5,7.5c2,0 3.9,0 5.9,0C82.1,18.5 82.1,3.5 72.4,3.5z"/>
            <path
                android:fillColor="#2c819b"
                android:pathData="M60.2,54.3c-7.8,-0.2 -15.6,-0.3 -23.3,-0.5c2.5,2.5 5,5 7.5,7.5c1,-7.7 1.9,-15.4 2.9,-23.2c-2.5,2.5 -5,5 -7.5,7.5c7.8,0.2 15.6,0.3 23.3,0.5c-2.5,-2.5 -5,-5 -7.5,-7.5c-1,7.7 -1.9,15.4 -2.9,23.2c-0.5,4.1 3.8,7.5 7.5,7.5c4.5,0 7,-3.4 7.5,-7.5c1,-7.7 1.9,-15.4 2.9,-23.2c0.5,-4.1 -3.8,-7.4 -7.5,-7.5c-7.8,-0.2 -15.6,-0.3 -23.3,-0.5c-4.5,-0.1 -7,3.5 -7.5,7.5c-1,7.7 -1.9,15.4 -2.9,23.2c-0.5,4.1 3.8,7.4 7.5,7.5c7.8,0.2 15.6,0.3 23.3,0.5C69.9,69.5 69.9,54.5 60.2,54.3z"/>
        </vector>
    </item>
</layer-list>

您需要做的就是:

  1. 在 ImageView 中渲染向量
  2. 从 ImageView 获取 Bitmap
  3. 将位图保存为 PNG 文件

在 ImageView 中渲染 Vector:

//--------------------------------------------------------------------------------
    ImageView image = R.findViewById(R.id.imageView);//get ImageView
//--------------------------------------------------------------------------------

从 ImageView 获取 Bitmap:

//--------------------------------------------------------------------------------
    Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();//get Bitmap
    SaveImage(bitmap,"my_png_file");//save it
//--------------------------------------------------------------------------------

将位图保存为 PNG 文件:

//--------------------------------------------------------------------------------
    private void SaveImage(Bitmap finalBitmap, String filename)
    {
           String root = Environment.getExternalStorageDirectory().toString();
           File myDir = new File(root + "/saved_images");
           myDir.mkdirs();
           Random generator = new Random();
           int n = 10000;
           n = generator.nextInt(n);

           String fname = filename +".png";
           File file = new File (myDir, fname);
           if (file.exists ()) file.delete ();
           try {
               FileOutputStream out = new FileOutputStream(file);
               finalBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
               out.flush();
               out.close();
               sendBroadcast(new Intent(
                   Intent.ACTION_MEDIA_MOUNTED,
                   Uri.parse("file://" + Environment.getExternalStorageDirectory())));

           } catch (Exception e) {
               e.printStackTrace();
           }
    }//SaveImage
    //--------------------------------------------------------------------------------
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Android 矢量绘图转换为启动器图标 PNG 的相关文章

随机推荐

  • 倾斜的div边框透明度

    所以 我知道如何使用 after 和边框为现代布局制作倾斜的 div 但是 我想知道您是否可以使用它通过透明度裁剪掉 div 的一部分 例如 假设我有一排带有背景图像的卡片 我想要在这些卡片上产生倾斜效果 但是 这里的倾斜只是页面 不是卡片
  • /rest-auth/password/reset/ 处的 NoReverseMatch

    我有一个带有角度前端的 Django 应用程序 当我尝试从前端发送密码重置请求时 出现以下错误 使用参数 和关键字反转 password reset confirm 参数 u uidb64 MTE u token u 3z4 eadc7ab
  • HTTP 网站上出现“阻止加载混合活动内容”

    Problem 我正在开发一个使用 HTTP 协议提供服务的网站 在开发中 我使用 Webpack 及其 webpack dev server 它在本地提供页面服务http localhost 9090 我很惊讶地在 Firefox 58
  • 如何创建唯一 ID,例如 YouTube?

    我一直想知道他们是如何以及为什么这样做 一个例子 http youtube com watch v DnAMjq0haic http youtube com watch v DnAMjq0haic 这些 ID 是如何生成的 并且不会重复 这
  • ASP.NET Identity 出现“创建模型时无法使用上下文”异常

    为什么当我们调用 AccountApiController Register 方法时会发生这种情况 什么试图使用上下文 什么试图创建上下文 我们如何避免这种情况 我们如何调试这个 Message 发生错误 ExceptionMessage
  • 覆盖命名空间中导入的函数

    As the termplotR 中的函数包含一些奇怪的代码 这些代码给我带来了烦人的错误 我想在我自己的测试代码中覆盖它 直到找到更永久的解决方案 问题是更改的函数没有被加载mgcv包裹 这mgcv包从其命名空间中的 stats 包加载
  • 在 Django Admin 中为 list_filter 创建自定义过滤器

    我想为 django admin 制作自定义过滤器 而不是普通的 is staff 和 is superuser 我读过这个列表过滤器 https docs djangoproject com en dev ref contrib admi
  • 通过 PHP 和 cURL 访问 NodeJS / Socket.io

    我正在运行 nodejs socket io v 0 7 服务器将数据推送到 Web 客户端 这很有用 为了扩展应用程序 我需要通过 php 触发 影响 socket io 我知道一个使用 cURL over http 和 nodejs h
  • 推荐的货币价值四舍五入方法

    首先看到下面的问题 SetRoundMode rmUp 并将 round 值四舍五入 如 10 结果为 10 0001 https stackoverflow com questions 565797 setroundmodermup an
  • 错误:胆怯地拒绝“sudo brew install”为 Mac OSX Mountain Lion 安装glue 0.3

    我正在尝试为 OXS Mountain Lion 安装glue 0 3 并在安装自制软件后遇到此错误 错误 懦弱地拒绝sudo brew install您可以将brew 与sudo 一起使用 但前提是brew 可执行文件由root 拥有 但
  • 玩2.3 多个模块的requireJs优化和shim

    这是我当前的 Play 2 2 x requireJS 设置 2 3之后还能继续用吗 我在 2 3 文档中找不到 requireJs 或 requireJsShim requireJs Seq mainAccount js mainOrg
  • 如何使用递归编程在列表框中填充多个类别

    I have a categories table which is set up to allow an infinite number of sub category levels I would like to mimic the f
  • 在 Windows Phone 上实现可滚动表格

    我需要创建一个电视指南应用程序 要求是 UI 必须是您可以在此处看到的 UI 的副本 raspored bnet hr http raspored bnet hr 正如您所看到的 有很多数据 所以 基本上它是一个大的可滚动表格 由于 Win
  • 将 C++ 模板参数限制为子类

    如何强制模板参数T成为特定类的子类Baseclass 像这样的东西 template
  • Django Ckeditor 图像浏览器找不到图像

    所以我正在建立一个简单的博客来跟踪我的项目 我决定使用 CKeditor 作为所见即所得编辑器 除了图像部分之外 我能够使其所有内容正常工作 当我点击 图像浏览 时 我无法查看服务器中的图像 并且每当我上传图像时 它都会上传 但我无法查看它
  • 颠覆外部是一种反模式吗?

    Subversion 允许您使用以下方式嵌入其他存储库的工作副本外部因素 http svnbook red bean com en 1 1 ch07s04 html 可以轻松地对项目中的第三方库软件进行版本控制 虽然这些对于库的重用和版本控
  • 使用发送事件通过编程创建的 Dropzone 发送附加数据

    我有以下 例如简化的 角度指令 它创建一个放置区 directives directive dropzone dropZoneFactory function dropZoneFactory use strict return restri
  • MySQL排序后如何选择更多行?

    我有一个表 其中有 10 个结果 我们来说说以下几点 id user number 1 user1 10 2 user2 5 3 user3 30 4 user4 45 5 user5 5 6 user6 22 7 user7 10 8 u
  • UICollectionView 不在 UITableViewCell 内滚动

    我在 UITableViewCell 内滚动 UICollectionView 时遇到问题 不幸的是 CollectionView 根本不滚动 当我尝试禁用其他 UITableViewCells 时 它可以正常工作 反之亦然 集合视图单元格
  • 将 Android 矢量绘图转换为启动器图标 PNG

    我已经将 Android 启动器图标制作为矢量 但我发现我应该使用 PNG 而不是矢量 XML 如何将我的矢量图像转换为 PNG 作为启动器图标 如果有帮助的话 这是矢量