Articles of svg

Android Google Maps Marker:发布了未知的imageData参考

我正在尝试在我的应用中添加对平板电脑的支持,并遇到由此行代码抛出的IllegalArgumentException: marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.arrow_green_10by19)) 方法.fromResource可以从图像文件(png)中使用R.drawable.arrow_green_10by19,但是当用矢量文件arrow_green_10by19.xml(在Android Studio IDE中渲染得很好)替换png时,它会生成如上所述的运行时。 有人知道如何在BitmapDescriptorFactory中实现矢量资源并可以帮助我吗? 谢谢。

VectorDrawable不是居中对齐的

我用我拥有的路径数据创建了一个VectorDrawable文件。 但问题是图像没有在整个区域的中心对齐,而是创建为左上对齐。 看一看: 文件: 现在检查当使用app:srcCompat for imageView时它的实际外观。 有没有办法解决这个问题,因为我对VectorDrawables没有多少经验? 任何forms的帮助将不胜感激。 编辑:这是我使用矢量drawable的方式。

SVG转换 – 存储Path,Paint和Matrix对象的有效方法?

在我的Android应用程序中,我创建了一个SVG图像转换器类。 它解析SVG XML数据并将其转换为适当的Path,Paint和Matrix对象,然后将其应用于Canvas。 然后使用这个类,我实现了一个View,它使用我的SVG转换器类在屏幕上绘制我在Inkscape中生成的图像。 到现在为止还挺好。 (我很欣赏编写我自己的SVG转换器可以考虑重新发明,考虑到之前已经完成,但对我来说,这是我第一个Android应用程序中的一个有用的学习练习,并希望能给我一些额外的灵活性。) 使用SVG的目的是让我可以快速轻松地编写各种图形仪表设计。 每个仪表通常由一段图形组成,只需要绘制一次(例如仪表面和图例),以及定期更新的图形(指针角度,数值文本)。 目前我的仪表View效率不高,因为每次调用onDraw()时,都会调用我的SVG类来调整整个SVG文件,以生成Canvas的所有矢量数据。 我想要做的是对矢量数据进行一些中间存储,以便只需要解析一次SVG XML文件。 因此,我认为View可以在第一个onDraw()上从SVG文件中进行惰性初始化,然后将所有生成的Paths,Paint和Matrix对象存储到各种列表中。 然后,在每个后续的onDraw()上,我只是将它们从List中拉出来,并通过那些进入Canvas。 这样做的另一个优点是使用单独的列表来存储“移动”的矢量图形部分,例如仪表指针。 我想通过为Inkscape中代表指针的路径组分配一个“魔术”ID来做到这一点; 然后,SVG解析器类将识别出该单独的组需要单独存储到“静止”图形中。 然后,每当我需要根据测量数据刷新指针的角度时,View将仅将旋转变换应用于该组矢量数据。 事实上,我正在考虑这样做,以便移动指针图形实际上是在子视图中绘制的,这样只有在必须刷新指针时才重绘子视图。 所有这一切的最终目标是:我(或者甚至用户)可以启动像Inkscape这样的矢量成像程序,并快速生成仪表小部件的新设计。 我嵌入了一些元数据来指示必须根据测量数据操作图形的哪些位。 我不想要求解决这样的问题,而是希望听到关于我在这里做什么的意见,以及我提出的建议是否可以以更加优化的方式完成。 缓存Path和Paint对象组是否内存效率非常低? 此外,一旦它足够好(!)我很乐意在某个地方发布我的SVG类,如果有人发现它有用的话。

在Android 21上使用fillType =“evenOdd”

我有一个SVG图像,我想包含在Android项目中。 该项目的minSdk版本为9. Android Studio正在为SVG生成PNG文件。 但是,对于API 21+,Android studio将SVG包含在drawable-anydpi-v21资源文件夹中。 这意味着运行API 21及更高版本的任何设备都将使用SVG而不是PNG。 这就是问题所在:我的SVG需要android:fillType=”evenOdd” 。 PNG是正确生成的,但对于SVG,因为该属性是API 24+,它在API 21设备上被忽略,并且图像显示为填充而不是类似线框的图像。 反正有没有说服Android工作室只包含PNG并完全丢弃SVG? 还有其他解决方案吗?

默认(包)可见性覆盖的Android方法(不应该工作,但是 – 为什么?)

我一直在玩Android中的SVG支持并提出了这个库,声称它支持SVG,就像它们是原生的一样。 因为我发现这不可能真的很费劲,所以我去看看这个家伙是如何实际管理它的。 所以我发现了他的Resources衍生产品 ,他在其中声明了一个方法( loadDrawable ),该方法在基础Resources类中具有默认可见性 。 有趣的是,通常lint会报告你不能编写这个方法,因为它会隐藏基本方法,但在这种特殊情况下(注意缺少@Override指令 )这个方法被调用就像它被写了一样在基类中。 调用此方法的所有方法都将调用覆盖而不是原始方法。 对于我来自C++或Pascal等经典编译器,这完全是无法理解的。 基于此,我设法让我的SVG支持完全只需一次使用reflection,并对此非常高兴,但是: 为什么这样做?

Android中的SVG支持

我们将开发一个Android应用程序,用于显示svg格式的autocad绘图文件,其中ecma脚本正在使用。 我们在模拟器中测试了应用程序并在webview中打开了svg文件。 我们的问题是XML标签中的ecmascript不是在android中的webview中执行的。 我们知道android只支持3.0版的SVG。 它不支持svg中的ecmascript吗? 提前致谢 final String mimeType = “text/html”; final String encoding = “utf-8”; final String html = “”; WebView wv = (WebView) findViewById(R.id.webview_component); wv.getSettings().setJavaScriptEnabled(true); wv.loadDataWithBaseURL(“fake://not/needed”, html, mimeType, encoding, “”); Ragards Shibu

在java中解码SVG图像文件(编码为base64)

我有SVG文件编码为base64,我想用ImageView显示图像。 这是我试过的: // imageBase64 is string that represents the SVG image encoded as base64 byte[] decodedString = Base64.decode(imageBase64, Base64.DEFAULT); Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 但decodeByte总是返回null。 PS: 此代码适用于jpeg图像。 如果base64字符串包含base64前缀(“data:image / svg + xml; base64”或“data:image / jpeg; base64”),则decodingByte也始终返回null base64字符串是正确的(它在HTML和其他base64在线工具中很好用)

SVG在Android中保留纵横比

我在Android手机上遇到SVG Scaling问题。 我的网站的几个部分基于通过标签嵌入SVG的宽度和高度尺寸。 除了Android 4.1.2原生浏览器 (非CHROME)之外的所有浏览器 ,在不扭曲宽高比的情况下正确且完美地扩展SVG。 这是它在Firefox(和所有浏览器)上的显示方式的屏幕截图 以下是它在Android 4.1.2 Native Browser上的显示方式的屏幕截图。 测试url http://prashantsani.com/demos/svgIssue/ 我尝试了以下所有解决方案,但没有一个有效。 设置宽度,高度和视图框不起作用。 此外,preserveAspectRatio也不起作用。 在另一个SVG中进行包装并没有做到这一点(另外,我不想让图像居中,而是需要一种方式来对比图像)。 以编程方式居中svg路径 我试过这个: SVG调整图像宽高比,但它也不起作用。 宽度和高度已经以整数设置,而不是%或px。 请在回答之前阅读以下内容: 由于布局要求在某些地方宽度和高度,我必须在某些地方保持两者。 此问题仅发生在Android 4.1.2 {“浏览器”应用程序}上的NATIVE BROWSER APP中。 它非常出色,正如Chrome和Android 4.1.2上的所有其他浏览器所预期的那样。 如果find解决方案,小提琴或编码器会很有用。 不打算使用除SVG之外的任何图像格式。 通过css ….和SVG中提到的宽度和高度必须相应地缩放。 谢谢。

Android浏览器中的SVG

我知道它本身不受支持,但有没有任何JS Shims渲染到canvas对象或允许我在本机Android浏览器上渲染SVG的东西? (不是Opera等,因为我想避免让用户需要安装另一个浏览器)

关于覆盖资源的Android库

如果我创建一个库并添加普通的drawable int drawable-xxhdpi,那么在app上添加具有相同名称的Resource文件。该应用程序的Reasource将替换库的Resource,就像: 但是如果我使用svg资源,它将不会替换库的资源,如: 如何替换矢量drawable?