最近公司的UI突发奇想的又给了我们Android团队几张SVG的图片,让我们显示在某页面上。经过部门同事的一番努力最终还是将他们显示在屏幕上了。 但是还是有几个小问题

1 UI给的SVG图片应该显示的是白色,但是在Android设备上显示的确实黑色2 在某些手机上SVG会出现锯齿,给用户造成的感觉就是字体style都不一样

问题的原因就是我的同事是直接在将AS中将SVG转化为VectorDrawable,然后直接使用ImageView显示。 具体如何转化网上一大堆,就不多费口舌了。转化后的文件如下所示:

<vector xmlns:android="http://schemas.android.com/apk/res/android"    android:width="24dp"    android:height="124dp"    android:viewportHeight="110.0"    android:viewportWidth="110.0">    <path        android:fillColor="#FF000000"        android:pathData="M66.38,69.35a2.53,2.53 0,0 1,-0.74 1.82,2.42 2.42,0 0,1 -1.8,0.77H43.67a2.36,2.36 0,0 1,-1.82 -0.79,2.66 2.66,0 0,1 -0.72,-1.85A12,12 0,0 1,42 64.58a13,13 0,0 1,2.35 -3.7A17,17 0,0 1,47.73 58a38.2,38.2 0,0 1,4 -2.23L55.46,54a18.19,18.19 0,0 0,2.69 -1.58,6.37 6.37,0 0,0 1.63,-1.66 3.85,3.85 0,0 0,0.55 -2.11,3.24 3.24,0 0,0 -1.85,-3 10,10 0,0 0,-4.73 -1q-1.25,0 -2.26,0.1a10.2,10.2 0,0 0,-2 0.38,13.47 13.47,0 0,0 -1.92,0.74A17.78,17.78 0,0 0,45.55 47a2.36,2.36 0,0 1,-1.25 0.38,2.49 2.49,0 0,1 -1.85,-0.7 2.26,2.26 0,0 1,-0.7 -1.66A2.89,2.89 0,0 1,43 42.66a14.8,14.8 0,0 1,3.43 -1.87,17.13 17.13,0 0,1 4,-1.08A25.35,25.35 0,0 1,54 39.4a18.49,18.49 0,0 1,4.85 0.6,11.83 11.83,0 0,1 3.82,1.75 8.08,8.08 0,0 1,2.5 2.86,8.35 8.35,0 0,1 0.89,3.91 8.44,8.44 0,0 1,-0.62 3.34,9.52 9.52,0 0,1 -1.8,2.74A14.48,14.48 0,0 1,60.74 57a43,43 0,0 1,-4 2.21q-2,1 -3.62,1.82a20.3,20.3 0,0 0,-2.83 1.75,8.16 8.16,0 0,0 -1.85,1.87 3.71,3.71 0,0 0,-0.67 2.14H63.83a2.39,2.39 0,0 1,1.82 0.77A2.58,2.58 0,0 1,66.38 69.35Z" />vector>

一般情况下UI给我们的SVG图片可能需要我们手动的修改一下,比如我们需要将fillColor改为“#FFFFFFFF”这样字体才能显示为白色。并且需要将width和height设置为120dp,否则会有锯齿

最后再提一点因为SVG是在Android 5.0之后才支持的,所以如果想支持5.0之前的版本,最好使用兼容库。具体使用如下:

1 在build.gradle的defaultConfig中添加

vectorDrawables.useSupportLibrary = true

2 在xml文件中的ImageView控件上,不要使用 src 属性,应该使用 app:srcCompat 属性

<ImageView        android:layout_width="0dp"        android:layout_height="0dp"        app:layout_widthPercent="10%"        app:layout_heightPercent="10%"        app:srcCompat="@drawable/ic_lesson_two"        />

3 不要忘记Activity也需要继承AppCompatActivity

另外:如果想在Activity代码中动态设置SVG(VectorDrawable), 需要动态添加兼容

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

更多相关文章

  1. Android(安卓)系列 4.6在显示其他应用程序的同时运行后台服务
  2. android 解析并显示dicom文件的数据和图像
  3. Android(安卓)UI 如何让TextView中的文字居中显示
  4. android 解决横竖屏切换时重新载入的问题
  5. Android(安卓)图片如何高效加载与缓存 (4.5) —— 缩略图生成的
  6. Android之Glide使用详解--集成、配置、使用、特性
  7. Android(安卓)图片压缩策略详解,有效解决 Android(安卓)程序 OOM
  8. Android(安卓)之 图片压缩
  9. Android(安卓):为你的启动页面SplashActivity 添加动画的几种方法

随机推荐

  1. Android(安卓)Property Animation动画
  2. 阅读《Android(安卓)从入门到精通》(25)—
  3. 《Android开发技术周报》笔记
  4. android 从APP启动另一个APP
  5. Android(安卓)获取随机验证码功能示例
  6. Android(安卓)UI中间凸起的Tab(Raised Cen
  7. Unity3D-如何给AndroidMainifest.xml增加
  8. Android设置变量值之——与或非(&、|、~)
  9. OpenFrameworks + kinect + Android
  10. Android中dp与px互转的方法