drawable SVG 使用
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 使用的更多相关文章
- Android APK开发 Drawable文件夹下的自定义Drawable文件
版本:2018/2/11 Drawable的分类 自定义Drawable SVG矢量图 个人总结的知识点外,部分知识点选自<Android开发艺术探索>-第六章 Drawable 1.Dr ...
- [Jenkins] 解决 Gradle 编译包含 SVG Drawable 出现异常
异常信息 java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' as the value of th ...
- 【转】Android应用开发之PNG、IconFont、SVG图标资源优化详解
1 背景 最近因为一些个人私事导致好久没写博客了,多事之年总算要过去了,突然没了动力,所以赶紧先拿个最近项目中重构的一个小知识点充下数,老题重谈. 在我们App开发中大家可能都会有过如下痛疾(程序员和 ...
- Android Drawable资源
Android实现应用d动画效果:比如App第一次打开的开始动画等 有两种:GIF动画和代码实现. 第一种:借助于Gif制作工具软件实现.一般是和第三方开源的GifView(https://githu ...
- svg矢量图绘制以及转换为Android可用的VectorDrawable资源
项目需要 要在快速设置面板里显示一个VoWiFi图标(为了能够区分出来图形,我把透明的背景填充为黑色了) 由于普通图片放大后容易失真,这里我们最好用矢量图(SVG(Scalable Vector Gr ...
- 有关Color和Drawable你所不知道的那些内容
Android开发中,我们经常会用到Color或Drawable,有时他们是可以混用的,有时却有严格的区别. Drawable 体系结构 Drawable是可绘制物件的一般抽象.与View不同,Dra ...
- 创建Material Design风格的Android应用--使用Drawable
下面Drawables的功能帮助你在应用中实现Material Design: 图片资源着色 在android 5.0(api 21)和更高版本号,能够着色bitmap和.9 png 通过定义透明度遮 ...
- Android SVG矢量资源的使用方法
VectorDrawable 与 SVG Android 5.0(Lollipop, API 21)后,新增了<vector>标签,以VectorDrawable的形式支持SVG类型矢量图 ...
- Android使用SVG矢量动画(二)
上篇我们学习了怎么显示SVG矢量图像,当然还有一个更强大的功能,就是让SVG图像动起来,先上一张效果图吧: 要实现上述动画效果,就得用AnimatedVectorDrawable这个类了,它就是负责V ...
随机推荐
- TVM调试指南
1. TVM安装 这部分之前就写过,为了方便,这里再复制一遍. 首先下载代码 git clone --recursive https://github.com/dmlc/tvm 这个地方最好使用--r ...
- iptables防火墙操作-查看、配置、重启、关闭
查看iptables端口配置 iptables -L -n --line-number iptables端口配置(不开通3389无法远程连接,不开通icmp无法ping) iptables -A IN ...
- Java十进制转二进制
闲着没事写了个简单的十进制转二进制的算法,很简单,个人记录一下,不妥之处请指正. public static String toBinaryString(int j) { if (j < 0) ...
- 鼠标悬停设置layui tips提示框
官方介绍:吸附层,灵活判断出现的位置,默认在元素的右侧弹出. layer.tips(content, follow, options) layer.tips(msg, '#id',{tips: 1}) ...
- IDEA springboot maven 项目部署
- CentOS 安装 elasticsearch 注意点
注意点: 1. 从官网下载以 rpm 结尾的软件包 7.3.1版本 下载地址: https://artifacts.elastic.co/downloads/elasticsearch/elastic ...
- zencart1.5.x版管理员密码90天到期后台进入不了的解决办法
zencart1.5.x版管理员密码90天到期后如果不想更改密码,可以直接在数据库运行以下sql语句. 将pwd_last_change_date(密码最后变换日期)2014-11-11 11:11: ...
- aaa服务器
验证 授权 记账 authentication\authorization.accounting
- POJ 2142 - The Balance [ 扩展欧几里得 ]
题意: 给定 a b n找到满足ax+by=n 的x,y 令|x|+|y|最小(等时令a|x|+b|y|最小) 分析: 算法一定是扩展欧几里得. 最小的时候一定是 x 是最小正值 或者 y 是最小正值 ...
- struts2-052漏洞
转:https://thief.one/2017/09/06/1/ s2-052漏洞介绍 s2-052漏洞是当用户使用带有XStream组件的Struts-REST插件对XML格式的数据包进行反序列化 ...