首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么API19设备(以及API21以下的其他设备)需要vectorDrawables.useSupportLibrary来加载图标?

API19设备及API21以下的其他设备需要使用vectorDrawables.useSupportLibrary来加载图标的原因是因为在这些设备上,原生的Android框架不支持直接加载矢量图标(Vector Drawables)。矢量图标是一种使用数学描述来定义图形的图像格式,相比于位图图标(Bitmap Drawables),矢量图标具有无限的缩放性和更小的文件大小。

在较旧的Android版本中,矢量图标的支持是通过AppCompat库来实现的,而不是原生的Android框架。因此,为了在这些设备上使用矢量图标,需要在应用的build.gradle文件中添加vectorDrawables.useSupportLibrary = true配置,以告知编译器使用AppCompat库来加载矢量图标。

使用vectorDrawables.useSupportLibrary配置后,可以在布局文件中直接使用<ImageView>标签加载矢量图标,并且无需担心兼容性问题。同时,还可以通过代码动态加载矢量图标,例如:

代码语言:txt
复制
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageResource(R.drawable.ic_vector_icon);

需要注意的是,为了正确加载矢量图标,还需要确保在应用的build.gradle文件中添加以下配置:

代码语言:txt
复制
android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
    // ...
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.3.1'
}

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WebView 一切都在这儿

WebResourceResponse封装了一个Web资源响应信息,包含:响应数据流,编码,MIME类型,API21后添加了响应头,状态码与状态描述 WebResourceError添加于API23...WebViewDatabase存储与管理以下几类浏览数据: 表单自动填充用户名与密码 HTTP认证用户名与密码 曾经输入过文本(比如自动完成) WebStorage用于管理WebView提供JS...可通过Cookie保存浏览信息获得更轻松在线体验,比如保持登录状态、记住偏好设置,并提供本地相关内容。...JS 移除已注入Javascript对象 执行JS表达式 在API19后可异步执行JS表达式,并通过回调返回值 9 地理位置(Geolocation) https://developer.mozilla.org.../zh-CN/docs/Web/API/Geolocation/Using_geolocation 需要以下权限 默认可用 当H5调用地理位置API时,会先通过WebChromeClient.onGeolocationPermissionsShowPrompt

2.1K60

AppCompat v23.2  -- Vectors时代

一下是几个整合原因,包括: 允许开发者在所有的Android2.1以上设备更早用上图 允许APP本身能够用矢量图。它本身已经减少了APP AAR70KB左右。...这听起来不算很大,但是对于设备来说节省是很重要。快速节省是为了存储和传输。...= true } } 如果你还没有更新,在用v1.5后者更低版本,你需要在你build.gradle文件里添加以下内容: android { defaultConfig { //...这意味着你当你在Api21或者更高时你在用framework层VectorDrawable类。在用api21+framework create()方法是不同,是一个代理项目。...例如,一个StateListDrawable它引用其中包含载体其他文件。 res/drawable/state_list_icon.xml <selector xmlns:android="...

45840

Android技术选型闲聊

网络框架 Retrofit + RxJava + OkHttp 这似乎没啥可说,已经是主流了,而且非常好用。 Retrofit充分利用注解灵活性,以接口形式配置实现解耦。...至于为什么,稍微关注下就知道哪些项目是骗业绩骗star哪些是真正为解决问题用心维护。 Tinker官方Wiki 为什么强推Tinker?...使用Tinker有几点需要注意: TinkerId非常重要,最好在App内某个地方显示出来; Manifest.xml最好不要去改动,虽然某些改动生成补丁包可以合成,但不是在所有设备上都能成功; Tinker...如果真的是强迫每个设备上显示物理大小需要一致,那么直接用inch就行(少部分鸡贼厂商是没有给出准确inch),也别用什么dp了(搬倒砖)。...现在是2019年了,Android 5.0已经发布5年了,App最低兼容到api21就行了(主要是5.0相比4.+变得太大了,过多适配影响开发效率。

1.2K30

Android-Bitmap

Bitmap简介 位图(Bitmap)是使用像素阵列(Pixel-array/Dot-matrix点阵)表示图像,包括像素以及长、宽、颜色等描述信息。...而当我们通过代码,将这张图片加载进内存时,会先解析图片文件本身数据格式,然后还原为位图,也就是 Bitmap 对象,Bitmap 大小取决于像素点数据格式以及分辨率两个因素。...在实际应用中而言,建议使用ARGB_8888以及RGB_565。 如果你不需要透明度,选择RGB_565,可以减少一半内存占用....原因在于:上面的计算方式并不准确,我们要考虑不同设备以及同一设备不同条件: 2.1.1同设备或不同设备不同条件又分好多种: 不同drawable文件 磁盘或res中 图片格式由png转为jpg 那我们就从同设备不同...image.png 也就是位于 res 内不同资源目录中图片,当加载进内存时,会先经过一次分辨率转换,然后再计算大小,转换影响因素是设备 dpi 和不同资源目录 其实影响内存还有其他因素

1.4K20

为何大厂图片不会OOM?

通常情况下,我们可以使用 BitmapFactory 将某一路径下图片解析为 Bitmap 对象。 当一张图片加载到内存后,具体需要占用多大内存呢?...,会根据当前设备屏幕密度和图片所在 drawable 目录做一个对比,根据这个对比值进行缩放操作。...、Bitmap.Config 以及 缩放比,而缩放比大小取决于 设备屏幕密度和图片所在drawable对应密度。...因此适当时候,我们需要需要加载图片进行缩略优化。 修改图片加载 Config 修改占用空间少存储方式可以快速有效降低图片占用内存。...可以使用以下代码实现上述效果: ? 但是在每次调用 switchImage 切换图片时,都需要通过 BitmapFactory 创建一个新 Bitmap 对象。

1.1K20

Android性能优化(五)之细说Bitmap

例如:使用Pixel手机拍摄4048x3036像素(1200W)照片,如果按ARGB_8888显示的话,需要48MB内存空间(4048*3036*4 bytes),这么大内存消耗极易引发OOM。...Android4.4(API 19)之后被复用Bitmap内存必须大于需要申请内存Bitmap内存; Android4.4(API 19)之前待加载BitmapOptions.inSampleSize...备注:inSampleSize值大小不是随便设、或者越大越好,需要根据实际情况设置。...Bitmap占用内存计算 getByteCount()方法是在API12加入,代表存储Bitmap色素需要最少内存; getAllocationByteCount()在API19加入,代表在内存中为...Glide 查看官方文档以及性能优化典范,Google强烈推荐使用Glide做Bitmap加载

2.5K50

六个小技巧帮你瘦身Android APK

为什么APK瘦身重要 在开始深入研究APK瘦身之前,让我们先了解为什么它如此重要。 用户体验:大型APK文件会增加应用安装时间,启动时间和页面加载时间,降低了用户体验。...存储空间:手机设备存储空间是有限,用户不希望一个应用占用大部分存储空间。 下载速度:大型APK文件需要更长时间来下载,尤其是在慢速网络条件下。...更新难度:每次应用更新都需要下载整个APK文件,而且用户可能需要卸载其他应用以腾出足够空间。 资源优化 Android应用通常包含大量资源文件,如图像、音频和布局文件。...应用捆绑:使用Android App Bundles格式(.aab)构建应用,Google Play会根据用户设备和语言等因素生成定制APK文件。...资源文件限定符:使用资源文件限定符(如hdpi、xhdpi、sw600dp等)为不同设备提供适当资源。 矢量图标:使用矢量图标代替位图图标,它们可以无损缩放,适应不同屏幕密度。

49820

从400多k大小减到了2B,我APP是怎么优化

,用户体验还是很不好,下面我们就来整理一下 Android apk 优化方法 一、icon 图标使用 svg 在我们App中会有很多icon,而且美工小姐姐一般都是成套给,所以在我们res文件中可能需要放入多套...icon,这样一就会使我们apk文件体积变得非常大了,所以,优化第一步就从icon 处理开始. icon 尽量使用svg 文件,而不要使用png文件 首先 svg 文件是以xml文件方式存在...,占用空间小,而且能够根据设备屏幕自动伸缩不会失真....谷歌开发一种旨在加快图片加载速度图片格式。...使用如下: 转化前后对比 五、 移除无用资源 一键移除 (不推荐) 一键移除未用到资源,如果出现使用动态id加载资源会出现问题,而且这是物理删除,一旦删除将找不回了,所以能不用尽量别用,非要用请事先备份

1.3K40

android 中 vector 用法 ,坑 ,怎么替代,关于这几方面的一些看法

在安卓发展历程中,由于设备碎片化原故,谷歌在app中图标的适配上做出一步又一步改进,大体有这么几个阶段: 首先有了drawable-(m|h|xh|xxh|xxxh)dpi 自android studio...---- 首先,去哪找合适矢量图: 阿里巴巴UX矢量库 传送门 找到你需要图标,并下载svg 在android中打开vector assert 点击Local SVG 选择路径,并命名...为什么?...嗯,这个并不算是什么高科技, 只是一个字体而已, 我就不长篇大论了, 下面贴出获取流程吧,图从官网拿: 选中一堆需要图标并加入购物车, 然后再这里点下载到本地, 其中iconfont.ttf...就是我们需要字体了, 其他那些在web上用, 可以忽略。

81530

依赖管理(一):图片、字符串文件和字体在Flutter中怎么用?

因为这样不仅有利于单独维护资源,还可以对特定设备提供更准确兼容性支持,使得我们应用程序可以自动根据实际运行环境组织视觉功能,适应不同屏幕大小和密度等。...资源管理 在移动开发中,常见资源类型包括:JSON文件、配置文件、图标、图片以及字体文件等。他们都会被打包到APP安装包中,而App中代码可以在运行时访问这些资源。...在iOS平台中,为了区别不同分辨率手机设备,图片和其他原始资源是区别对待:iOS使用Images.xcassets 管理图片,而其他资源直接拖进工程项目即可。...而对于其他资源文件加载,我们可以通过Flutter应用主资源Bundle对象rootBundle,直接访问。...与Android、iOS开发类似,Flutter也遵循了基于像素密度管理方式,如1.0x、2.0x、3.0x或其他任意倍数,Flutter可以根据当前设备分辨率加载最接近设备像素比例图片资源。

2.8K30

如何克服响应式布局不足之处

文章提出了通过优化CSS代码、延迟加载资源、使用矢量图形和字体、调整字体大小和行距、增大点击区域、采用合适交互模式以及进行测试和优化等方法克服这些不足,以提供更优质用户体验。...响应式设计通常使用CSS媒体查询适应不同屏幕尺寸,这意味着浏览器需要加载更多CSS代码。为了解决这个问题,我们可以采取以下几种方法: 首先,优化CSS代码。...其次,延迟加载不必要资源。不同屏幕尺寸下可能需要加载不同图片或其他媒体资源。可以使用延迟加载技术,只在需要时候才加载资源,从而减少页面加载时间。...可以使用CSS媒体查询针对不同屏幕尺寸设定不同字体大小和行距。 此外,响应式布局可能会导致用户体验上不便。例如,页面上图标和按钮可能会变得太小,不易点击。...综上所述,虽然响应式布局在提供多设备适应性方面有一些不足之处,但通过优化CSS代码、延迟加载资源、使用矢量图形和字体、合适字体大小和行距、增大点击区域以及使用合适交互模式,并进行测试和优化,我们可以克服这些不足

11110

解决 iOS 15 上 APP 莫名其妙地退出登录 解决 iOS 15 上 APP 莫名其妙地退出登录

是什么发生了改变以及为什么它如此难以复现? 是什么发生了改变以及为什么它如此难以复现? 我粗略地看了一下发布说明,在谷歌上快速搜索了一下,我找不到任何东西,所以我不得不继续挖掘以更好地了解这个问题。...看一下这段代码,我们调用 SecItemCopyMatching 方法加载我们访问令牌,它返回数据以及描述结果 OSStatus 代码。...现在这完全说得通了,但唯一问题是,在 Cookpad 中,我们只在应用启动时从Keychain中读取信息,而我假设是,用户一定是点击了应用图标启动应用,因此设备在这时应该总是解锁,对吗?...即使我能够重现这个问题,我也100%确定我手机在我点击应用图标的时候是解锁,所以我不明白为什么会出现这个Keychain错误。...这就是为什么读取会失败,以及最终为什么一些用户会发现自己被登出了。

1.5K20

Android音视频之视频采集(系统API预览)

这篇文章我们掌握调用系统拍照和录制视频API实现拍照录像功能。 Camera 它是API21(Android5.0)以前用来对摄像头数据采集API,我们从开始到每个环节关键内容记录如下。...Camera:API21以后老API控制摄像头设备 SurfaceView:显示摄像头预览图像给用户 MediaRecorder:录制摄像头视频 权限声明 摄像头权限:我们要使用Camera...设备必须要声明一个权限 <uses-permission android:name="android.permission.CAMERA" / 但是当我们使用Intent调用系统自己Camera设备拍照录像就不需要这个权限...</manifest 这个权限可以让GooglePlay判断是否设备支持下载我们应用,如果设置required为true那么一定要有摄像头硬件设备才能下载,如果设置required为false,...那么没有摄像头硬件设备也可以下载,当然我们在程序里面就要判断一下是否有摄像头可用了。

1.4K10

Android开发(21) Android Manifest.xml 结构详解二

当然还有一些其他常用属性需要注意一下,比如android:versionCode是给设备程序识别版本用,必须是一个整数值代表app更新过多少次;而android:versionName则是给用户查看版本用...另外,如果设备需要支持蓝牙,我们可以使用支持这个功能。... 对于一些应用或者游戏来说,只能支持某些屏幕大小设备或者在某些设备效果比较好,我们就会使用标签指定支持屏幕特征。...当然,标签还提供了其他丰富配置属性,由于篇幅原因就不列举了,大家可以打开Android SDK文档进一步学习,以下是语法范例。...当然,这些属性具体用法我们还需要慢慢学习,以下是标签语法范例。

74040

iOS项目——项目开发环境搭建

设置界面如下图所示,这一块主要设置应用图标和启动界面,其中启动界面有两种设置方法:通过设置启动图片或者通过设置启动界面文件启动,启动图标和启动界面对不同机型设备需要尺寸是不同,具体应用图标和启动页面的大小尺寸介绍见官网...最右边面板可以选择添加哪一种或哪几种设备图标,每一个型号设备图标的尺寸是不同,具体需要多大尺寸图标可参见Human Interface Guidelines。...二则是在我们点击应用图标启动应用时,应用启动需要一定操作时间,在启动期间,为了增强应用程序启动时用户体验,您应该提供一个启动图像。启动图像与应用程序首屏幕看起来非常相似。...一样,我们将所有切好图标直接拖过来,他们会自动找到自己应该放在格子里,同样可以选择设备以及不同方向启动图。...文件进行加载,所以我们需要进行这两步,具体如下图所示。

1.5K150

解决 iOS 15 上 APP 莫名其妙地退出登录

是什么发生了改变以及为什么它如此难以复现? 是什么发生了改变以及为什么它如此难以复现?...看一下这段代码,我们调用 SecItemCopyMatching[2] 方法加载我们访问令牌,它返回数据以及描述结果 OSStatus 代码。...现在这完全说得通了,但唯一问题是,在 Cookpad 中,我们只在应用启动时从Keychain中读取信息,而我假设是,用户一定是点击了应用图标启动应用,因此设备在这时应该总是解锁,对吗?...即使我能够重现这个问题,我也100%确定我手机在我点击应用图标的时候是解锁,所以我不明白为什么会出现这个Keychain错误。...这就是为什么读取会失败,以及最终为什么一些用户会发现自己被登出了。

87010

Android开发中Wi-Fi处理

相关属性及概念 networkId——连接某个wifi热点时,系统会为该热点生成一个networkId,在同一设备上,不同热点networkId是唯一,通常情况下为大于0整数,在某些设备上,...ssid是有差异 WifiInfo中ssid是包括了双引号,如"CCMC" ScanResult中ssid是不包括双引号,如CCMC 热点加密类型 目前,常见及需要处理热点,包括以下3大类...,不代表wifi状态变化; 通过监听广播WifiManager.WIFI_STATE_CHANGED_ACTION ,判断真正wifi开关变化,该广播带有一个int型表示wifi状态: int...,只有ssid和networkId是一定有的,可以用于直接连接该热点,其他信息如bssid,密钥等信息基本都是空。...10%以下,在api21以下,基本都可以成功; 可以通过反复进行此操作提高成功率,但效果不大。

4.2K20

Android4.42-Settings源码分析之蓝牙模块Bluetooth(上)

好了,属性配置就介绍到这儿了,接下来要真正开始蓝牙模块学习了,首先明确模块布局,蓝牙模块功能,蓝牙实现有:开启蓝牙,蓝牙重命名,蓝牙检测性及检测时间设置,扫描附近可用蓝牙设备加载已经配对蓝牙设备...蓝牙开关涉及到本地蓝牙状态更改以及用户点击switch更改蓝牙状态,当本地蓝牙状态发生改变时需要更新switch状态,当switch状态发生改变时需要更新本地蓝牙状态。...首先执行addPreferencesForActivity加载switch,在该方法中构造BluetoothEnabler对象,对switch状态进行初始化以及状态改变监听。...mMyDevicePreference.setTitle(mLocalAdapter.getName()); //如果是手机,图标设置为手机图标,如果是平板电脑或其他则设置为电脑图标...,int型值,大小为23,表示对附近所有设备可见,可以扫描其他设备

1.5K20
领券