Android会使用一些规则来去帮我们匹配最适合的图片。什么叫最适合的图片?比如我的手机屏幕密度是xxhdpi,那么drawable-xxhdpi文件夹下的图片就是最适合的图片。因此,当我引用android_logo这张图时,如果drawable-xxhdpi文件夹下有这张图就会优先被使用,在这种情况下,图片是不会被缩放的。但是,如果drawable-xxhdpi文件夹下没有这张图时, 系统就会自动去其它文件夹下找这张图了,优先会去更高密度的文件夹下找这张图片,我们当前的场景就是drawable-xxxhdpi文件夹,然后发现这里也没有android_logo这张图,接下来会尝试再找更高密度的文件夹,发现没有更高密度的了,这个时候会去drawable-nodpi文件夹找这张图,发现也没有,那么就会去更低密度的文件夹下面找,依次是drawable-xhdpi -> drawable-hdpi -> drawable-mdpi -> drawable-ldpi。

规则:先找比自己大的(从小大到大找),再打比自己小的(从大到小找)。

从Android API 24(安卓7.0)开始,自定义Drawables类可以最终在XML中使用(仅在您的包中)。

SVG 使用

最近公司的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
1
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); https://blog.csdn.net/qq_19560943/article/details/54410857?utm_source=blogxgwz6 参考

drawable SVG 使用的更多相关文章

  1. Android APK开发 Drawable文件夹下的自定义Drawable文件

    版本:2018/2/11 Drawable的分类 自定义Drawable SVG矢量图 个人总结的知识点外,部分知识点选自<Android开发艺术探索>-第六章 Drawable 1.Dr ...

  2. [Jenkins] 解决 Gradle 编译包含 SVG Drawable 出现异常

    异常信息 java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' as the value of th ...

  3. 【转】Android应用开发之PNG、IconFont、SVG图标资源优化详解

    1 背景 最近因为一些个人私事导致好久没写博客了,多事之年总算要过去了,突然没了动力,所以赶紧先拿个最近项目中重构的一个小知识点充下数,老题重谈. 在我们App开发中大家可能都会有过如下痛疾(程序员和 ...

  4. Android Drawable资源

    Android实现应用d动画效果:比如App第一次打开的开始动画等 有两种:GIF动画和代码实现. 第一种:借助于Gif制作工具软件实现.一般是和第三方开源的GifView(https://githu ...

  5. svg矢量图绘制以及转换为Android可用的VectorDrawable资源

    项目需要 要在快速设置面板里显示一个VoWiFi图标(为了能够区分出来图形,我把透明的背景填充为黑色了) 由于普通图片放大后容易失真,这里我们最好用矢量图(SVG(Scalable Vector Gr ...

  6. 有关Color和Drawable你所不知道的那些内容

    Android开发中,我们经常会用到Color或Drawable,有时他们是可以混用的,有时却有严格的区别. Drawable 体系结构 Drawable是可绘制物件的一般抽象.与View不同,Dra ...

  7. 创建Material Design风格的Android应用--使用Drawable

    下面Drawables的功能帮助你在应用中实现Material Design: 图片资源着色 在android 5.0(api 21)和更高版本号,能够着色bitmap和.9 png 通过定义透明度遮 ...

  8. Android SVG矢量资源的使用方法

    VectorDrawable 与 SVG Android 5.0(Lollipop, API 21)后,新增了<vector>标签,以VectorDrawable的形式支持SVG类型矢量图 ...

  9. Android使用SVG矢量动画(二)

    上篇我们学习了怎么显示SVG矢量图像,当然还有一个更强大的功能,就是让SVG图像动起来,先上一张效果图吧: 要实现上述动画效果,就得用AnimatedVectorDrawable这个类了,它就是负责V ...

随机推荐

  1. mybatis批量更新表setting parameters 错误

    mybatis中想用 foreach标签 批量update set表 下面是mapper.xml <update id="updateMonitorById" paramet ...

  2. MySQL踩坑及MySQL解压版安装

    MySQL默认当前时间: MySQL5.5版本以下是不支持:datetime default now() 的,只能写成 timestamp default now() ; 而MySQL5.6以上是支持 ...

  3. PAT Basic 1051 复数乘法 (15 分)

    复数可以写成 ( 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 1:也可以写成极坐标下的指数形式 (,其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (. 现给定两 ...

  4. c++字符和字符串转整数类型及大小端

    在网络传输中,很多数据都是按字节传递而不是字符串.最近就遇到了这个问题,在刚开始学c语言时都没有问题,可能太久不用了,记录一下 在报中文,用2个字节hex码来表示报文正文长度,什么是hex码呢 就是1 ...

  5. hexo个人博客添加宠物/鼠标点击效果/博客管理

    1.添加宠物 博客宠物模型:https://github.com/xiazeyu/live2d-widget-models 模型对应的动画效果:https://huaji8.top/post/live ...

  6. oracle plsql登陆用户名密码都正确,拒绝登陆

    先通过sqlplus  或者 sql developer 或者其他用户登陆 然后更改 登陆不上的用户的密码  然后再用plsql登陆就可以了  然后还可以再把用户密码再改回来 也可以登陆了

  7. 论文参考文献中的M R J意义

    1 期刊作者.题名[J].刊名,出版年,卷(期):起止页码 2 专著作者.书名[M].版本(第一版不著录).出版地:出版者,出版年.起止页码 3 论文集作者.题名[C].//编者.论文集名.出版地:出 ...

  8. five rendering ideas 里获取csm的 shadow边界做 pcf

    http://advances.realtimerendering.com/s2011/White,%20BarreBrisebois-%20Rendering%20in%20BF3%20(Siggr ...

  9. HTML实现背景颜色的渐变

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 【Python网络】网络协议篇

    OSI七层协议 互联网协议按照功能不同分为OSI七层 或 TCP/IP五层 或 TCP/IP四层 每层运行常见物理设备 TCP/IP五层模型讲解 每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬 ...