热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Android安装包优化Android中使用SVG图片(使用appcompat支持库兼容5.0以下版本的Android系统使用矢量图)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android安装包优化Android中使用SVG图片(使用appcompat支持库兼容5.0以下版本的Android系

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android 安装包优化Android 中使用 SVG 图片 ( 使用 appcompat 支持库兼容 5.0 以下版本的 Android 系统使用矢量图 )相关的知识,希望对你有一定的参考价值。








文章目录


  • 一、使用 appcompat 支持库兼容 5.0 以下版本的 Android 系统使用矢量图
  • 二、完整代码示例
    • 1、build.gradle 构建脚本
    • 2、布局文件
    • 3、运行效果

  • 三、参考资料











一、使用 appcompat 支持库兼容 5.0 以下版本的 android 系统使用矢量图



参考 Android 官方文档 : 添加多密度矢量图形



使用支持库添加对矢量图资源的支持 :


  • com.android.support:appcompat-v7 支持库版本需要




    23.2



    23.2


    23.2
    以上 , 或使用 androidx.appcompat:appcompat 支持库 ;
  • Gradle 插件 , 版本需要




    2.0



    2.0


    2.0
    以上 ;


满足上述版本要求后 , 在 build.gradle 构建脚本的 " android / defaultConfig " 层级下 , 添加矢量图支持 , vectorDrawables.useSupportLibrary = true ;

在 dependencies 中添加支持库 : compile 'com.android.support:appcompat-v7:23.2.0'implementation 'androidx.appcompat:appcompat:1.2.0' 二选一即可 ;



现在的应用创建后自带 implementation ‘androidx.appcompat:appcompat:1.2.0’ 支持 ;



构建脚本配置 :

android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
//implementation 'com.android.support:appcompat-v7:23.2.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
}


引用矢量图 : 在布局文件中 , 使用 app:srcCompat 属性标签 , 设置矢量图 ;

<ImageView
android:layout_width&#61;"100dip"
android:layout_height&#61;"100dip"
app:layout_constraintBottom_toBottomOf&#61;"parent"
app:layout_constraintLeft_toLeftOf&#61;"parent"
app:layout_constraintRight_toRightOf&#61;"parent"
app:layout_constraintTop_toTopOf&#61;"parent"
app:srcCompat&#61;"&#64;drawable/ic_plane"/>

在这里插入图片描述



运行效果 :

在这里插入图片描述










二、完整代码示例








1、build.gradle 构建脚本



plugins {
id &#39;com.android.application&#39;
id &#39;kotlin-android&#39;
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "kim.hsl.svg"
minSdkVersion 18
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
// 生成 PNG 图片配置
//generatedDensities &#61; [&#39;hdpi&#39;, &#39;mdpi&#39;, &#39;xhdpi&#39;, &#39;xxhdpi&#39;, &#39;xxxhdpi&#39;]
// 使用 com.android.support:appcompat 支持库配置
vectorDrawables.useSupportLibrary &#61; true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(&#39;proguard-android-optimize.txt&#39;), &#39;proguard-rules.pro&#39;
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget &#61; &#39;1.8&#39;
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation &#39;androidx.core:core-ktx:1.3.2&#39;
// 矢量图支持库 , 支持 5.0 以下版本手机使用矢量图 , 这个是创建应用时自带的配置
implementation &#39;androidx.appcompat:appcompat:1.2.0&#39;
implementation &#39;com.google.android.material:material:1.3.0&#39;
implementation &#39;androidx.constraintlayout:constraintlayout:2.0.4&#39;
testImplementation &#39;junit:junit:4.&#43;&#39;
androidTestImplementation &#39;androidx.test.ext:junit:1.1.2&#39;
androidTestImplementation &#39;androidx.test.espresso:espresso-core:3.3.0&#39;
}





2、布局文件




<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android&#61;"http://schemas.android.com/apk/res/android"
xmlns:app&#61;"http://schemas.android.com/apk/res-auto"
xmlns:tools&#61;"http://schemas.android.com/tools"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent"
tools:context&#61;".MainActivity">

<ImageView
android:layout_width&#61;"100dip"
android:layout_height&#61;"100dip"
app:layout_constraintBottom_toBottomOf&#61;"parent"
app:layout_constraintLeft_toLeftOf&#61;"parent"
app:layout_constraintRight_toRightOf&#61;"parent"
app:layout_constraintTop_toTopOf&#61;"parent"
app:srcCompat&#61;"&#64;drawable/ic_plane"/>

androidx.constraintlayout.widget.ConstraintLayout>





3、运行效果



在这里插入图片描述










三、参考资料



参考文档 :


  • 添加多密度矢量图形 SVG : https://developer.android.google.cn/studio/write/vector-asset-studio

  • 缩减、混淆处理和优化应用 : https://developer.android.google.cn/studio/build/shrink-code

  • SVG 语法格式 : https://www.runoob.com/svg/svg-tutorial.html



博客资源 :


  • GitHub 项目源码 : https://github.com/han1202012/SVG

  • 下载地址 : https://download.csdn.net/download/han1202012/18542570






推荐阅读
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
author-avatar
1515921251_06a4db
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有