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

Android:编译要在drawable文件夹之外使用的9补丁文件?

在Android开发中,9补丁文件是用于适配不同屏幕密度的图片资源。当编译Android应用时,系统会根据设备的屏幕密度自动选择合适的图片资源进行显示,以保证应用在不同设备上的界面效果一致。

通常情况下,9补丁文件应该放置在drawable文件夹下的不同密度文件夹中,例如:

  • drawable-mdpi:适用于中等密度的屏幕(约160dpi)
  • drawable-hdpi:适用于高密度的屏幕(约240dpi)
  • drawable-xhdpi:适用于超高密度的屏幕(约320dpi)
  • drawable-xxhdpi:适用于超超高密度的屏幕(约480dpi)
  • drawable-xxxhdpi:适用于超超超高密度的屏幕(约640dpi)

然而,有时候我们可能需要在drawable文件夹之外使用9补丁文件。这种情况通常发生在需要在代码中动态加载图片资源时,或者需要将图片资源作为参数传递给某些方法时。

为了在drawable文件夹之外使用9补丁文件,我们可以将9补丁文件放置在res目录的任意位置,并使用特定的资源标识符来引用它们。这些资源标识符由以下两部分组成:

  1. 类型标识符:表示资源的类型,对于9补丁文件来说,应该是"drawable"。
  2. 名称标识符:表示资源的名称,可以自定义,但必须保证唯一性。

例如,我们可以将9补丁文件命名为"patch.9.png",然后在代码中使用以下方式引用它:

代码语言:java
复制
Resources res = getResources();
int resId = res.getIdentifier("patch", "drawable", getPackageName());
Drawable drawable = res.getDrawable(resId);

在上述代码中,"patch"是我们自定义的名称标识符,"drawable"是类型标识符,"getPackageName()"是获取应用包名的方法。

需要注意的是,使用这种方式引用9补丁文件时,系统不会自动根据屏幕密度选择合适的资源,而是直接使用我们指定的资源。因此,我们需要确保所使用的9补丁文件已经适配了目标屏幕密度。

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

  • 腾讯云对象存储(COS):提供高可靠、低成本的云端存储服务,适用于存储和管理各类非结构化数据。详情请参考:腾讯云对象存储(COS)
  • 腾讯云云服务器(CVM):提供可扩展的计算容量,支持多种操作系统,适用于构建高性能、可靠的应用程序和服务。详情请参考:腾讯云云服务器(CVM)
  • 腾讯云人工智能(AI):提供丰富的人工智能服务和解决方案,包括图像识别、语音识别、自然语言处理等,帮助开发者快速构建智能化应用。详情请参考:腾讯云人工智能(AI)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【原创】Android-找不到 drawable 文件夹下下 xml 文件

今天遇到了这个问题,出错主要两种方面 提示 布局 XML 文件无法加载 提示找不到 drawable 文件 第一种 ‘ 布局 XML 文件无法加载 ’ 报错是这样: Binary XML...file line #28: Binary XML file line #28: Error inflating class Button 第二种 ‘ 找不到 drawable 文件 ’ 报错是这样...: android.content.res.Resources$NotFoundException: Resource ID #0x7f070083 发生这两个错误原因是 Android 操作系统版本问题...解决方法都一样: 检查有用 ‘ xml ’ 文件是不是存放在,drawable 文件夹下,drawable-v24 包下?...如果是的话,将其移到 drawable 包下即可: 最后说一句,在 drawable-v24 这种对操作系统版本有限制包下,轻易不要放东西。 【 如果本文对你有帮助,欢迎关注我获得更多资讯 】

1.7K20

046android初级篇之android多分辨率兼容

相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源: 如果drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹中有同一张图片资源不同密度表示...,那么系统会去加载drawable_mdpi文件夹资源; 如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中资源,其他同理...2.1.2 横屏竖屏目录区分 drawable a) drawable-hdpi该图片即适用于横屏,也适用于竖屏; b) drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹资源...; c) drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹资源。...其实很简单,只需要在res目录下创建不同layout文件夹,比如:layout-640x360、layout-800x480……所有的layout文件编译之后都会写入R.Java里,而系统会根据屏幕大小自己选择合适

70720
  • Android Studio下APP目录结构详解

    3、build 这个目录你也不需要过多关心,它主要包含了一些在编译时自动生成文件。...9、HelloWorld.iml iml文件是所有IntelliJ IDEA项目都会自动生成一个文件Android Studio是基于IntelliJ IDEA开发),用于标识这是一个IntelliJ...6、main/AndroidManifest.xml 这是你整个Android项目的配置文件,你在程序中定义所以四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。...9、app.iml IntelliJ IDEA项目自动生成文件,我们不需要关心或修改这个文件内容。...以drawable开头文件夹都是用来放图片; 以mipmap开头文件夹都是用来放应用图标的; 以values开头文件夹都是用来放字符串、样式、颜色等配置; layout文件夹是用来放布局文件

    2.2K11

    【知识普及】平板屏幕分辨率和屏幕比例_和平精英平板分辨率

    相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源: 1) 如果drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹中有同一张图片资源不同密度表示...,那么系统会去加载drawable_mdpi文件夹资源; 2) 如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中资源,其他同理...2.1.2 横屏竖屏目录区分 1) drawable a) drawable-hdpi该图片即适用于横屏,也适用于竖屏; b) drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹资源...; c) drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹资源。...其实很简单,只需要在res目录下创建不同layout文件夹,比如:layout-640×360、layout-800×480……所有的layout文件编译之后都会写入R.java里,而系统会根据屏幕大小自己选择合适

    4.9K20

    Android资源混淆打包方案

    概述 我们知道在Android打包过程中,有一个步骤是压缩,也是为了减少apk包大小,其中在压缩过程中,很大一部分就是对资源压缩,除了系统压缩方案之外,我们今天讲另外两种压缩方案:微信方案和美团方案...根据Android编译流程,所有资源ID已经被编译成32位int值。...这说明我们并不需要去修改xml与java,因为在编译过程已经被R.java所替换,我们直接修改resources.arsc二进制数据,不改变打包程,只要在生成resources.arsc之后修改它,同时重命名资源文件...jar文件, .apk文件), 它也可以把资源编译为二进制文件,并生成resources.arsc, AAPT这个工具在APK打包过程中起到了非常重要作用,在打包过程中使用AAPT对APK中用到资源进行打包...(具体处理方式视文件后缀不同而不同,例如:”.xml”会编译成二进制文件,”.png”文件会进行优化等等)后才进行打包; 会对除了assets资源之外所有的资源赋予一个资源ID常量,并且会生成一个资源索引表

    2K100

    android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    ,可以直接使用 cmd 进行编译;       ndk 为 android-ndk-r10d(强烈建议使用 r9 或 r10 系列,因为这两个能在 cmd 中编译出 .so),r10d 能够支持 android...如果使用 cygwin,要做好心理准备,下载和安装它,非常非常久,文件总体积 20 多G!!!!我是用了9个多小时。 3,---opencv for android sdk 下载完成后。...4,编译 .so 使用 as 创建一个新项目,然后在你 项目的 main 目录下创建一个一个 jni 文件夹,这样创建: ? 创建好了之后,是这样: ?...文件夹下面 分别创建 Android.mk 、Application.mk 和你要编译 .cpp 或者.c 文件,前两个 内容可以模仿我上面介绍, .cpp 我这里提供一个。...你可以在 as cmd 中或者 系统 cmd框中实现编译,首先使用命令进入到当前 jni 文件夹 目录,例如,我是  D:asproject/JniDemo/app/main/jni,然后使用命令

    5.6K50

    Android Studio 环境搭建与使用

    文件夹路径,一般是在用户账号文件夹下,比如我这里是C:\Users\issuser.gradle会发现该文件夹下生成了下图中文件 ?...build 这个目录你也不需要过多关心,它主要包含了一些在编译时自动生成文件。...main/AndroidManifest.xml 这是你整个Android项目的配置文件,你在程序中定义所以四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。....gitignore 这个文件用于将app模块内指定目录或文件排除在版本控制之外,作用和外层.gitignore文件类似。...以drawable开头文件夹都是用来放图片; 以mipmap开头文件夹都是用来放应用图标的; 以values开头文件夹都是用来放字符串、样式、颜色等配置; layout文件夹是用来放布局文件

    1.9K30

    Android资源混淆打包方案

    概述 我们知道在Android打包过程中,有一个步骤是压缩,也是为了减少apk包大小,其中在压缩过程中,很大一部分就是对资源压缩,除了系统压缩方案之外,我们今天讲另外两种压缩方案:微信方案和美团方案...根据Android编译流程,所有资源ID已经被编译成32位int值。...这说明我们并不需要去修改xml与java,因为在编译过程已经被R.java所替换,我们直接修改resources.arsc二进制数据,不改变打包程,只要在生成resources.arsc之后修改它,同时重命名资源文件...jar文件, .apk文件), 它也可以把资源编译为二进制文件,并生成resources.arsc, AAPT这个工具在APK打包过程中起到了非常重要作用,在打包过程中使用AAPT对APK中用到资源进行打包...(具体处理方式视文件后缀不同而不同,例如:”.xml”会编译成二进制文件,”.png”文件会进行优化等等)后才进行打包; 会对除了assets资源之外所有的资源赋予一个资源ID常量,并且会生成一个资源索引表

    2.6K70

    AndroidStudio初识

    build 这个目录你也不需要过多关心,它主要包含了一些在编译时自动生成文件。....gitignore 这个文件是用来将指定目录或文件排除在版本控制之外。 build.gradle 这是项目全局gradle构建脚本,通常这个文件内容是不需要修改。...main/AndroidManifest.xml 这是你整个Android项目的配置文件,你在程序中定义所以四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。....gitignore 这个文件用于将app模块内指定目录或文件排除在版本控制之外,作用和外层.gitignore文件类似。...3、项目中资源 以drawable开头文件夹都是用来放图片; 以mipmap开头文件夹都是用来放应用图标的; 以values开头文件夹都是用来放字符串、样式、颜色等配置; layout文件夹是用来放布局文件

    1.4K00

    HelloWorld,我第一趟旅程出发点

    Compile With: 指程序将使用哪个版本SDK进行编译,这里选择Android 8.0.0。 7....在图中,可以看到一个Android程序由多个文件以及文件夹组成,这些文件分别用于不同功能,常用文件文件夹如下: 1.src: 该目录是放置所有Java代码地方,在这里含义和 普通...其中,drawable目录分为不同文件夹drawable-hdpi、drawable-ldpi、drawable-mdpi、 drawable-xhdpi、drawable-xxhdpi,这些文件夹中存放图片分别对应不同手机屏幕大小...9.res/layout: 存放xml 界面文件,xml 界面文件和HTML 文件一样,主要用于显示用户操作界面。 10.res/values: 存放应用使用各种类型数据。...16.project.properties: 该文件记录了 Android项目运打时环境,并通过一行代码指定了编译程序时所使用SDK版本,这个版本可以手动更改,但必须是已下载版本 3.2走进

    86570

    手把手教你逆向分析 Android 程序

    3.AndroidManifest.xml:Android 配置文件编译过程依然被转换为 AXML 格式。...5.resources.arsc:具有 id 值资源索引表(asserts 文件夹资源不会生成索引)。...Apk 核心逻辑主要在 classes.dex 中,破解和二次打包也基本上对这个文件做手脚,所以对这个文件保护也尤为重要。 ?...那么什么是 smali 文件呢? 1.Smali 是 Android Dalvik 虚拟机所使用一种 dex 格式中间语言。...以手机XX应用为例,当你按照上述步骤反编译,重新编译,签名之后,进入 APP 会出现这个页面,无法正常使用。 因为你并没有这个 APP 正版签名文件(关于签名相关东西,在后面我再仔细讲)。 ?

    3.3K181

    安卓开发-设置RadioButton点击效果

    " 8 android:checked="true" //设置为已选中,则显示效果为选中字体颜色 9 android:text..."              android:background="@color/radio_group_selector"  这个就要对应两个文件 在res文件夹下创建一个名称为color文件夹,然后在...color文件夹中创建一个xml文件  color_radiobutton  用于设置改变字体选中点击颜色变化 即文件目录为:     res/color/color_radiobutton 这个文件代码为...9 10 在res文件夹下创建一个名称为color文件夹,然后在color文件夹中创建一个xml文件  radio_group_selector  用于设置改变字体选中点击颜色变化...可以看到  当点击情况下 颜色是绿色 背景是绿色,没有被点击情况下 文字是白色颜色,背景是黑色 当然还要在res/values/color.xml中设置颜色 1 <?

    1.5K70

    Android一些关于分辨率和布局设置

    drawable- hdpi、drawable- mdpi、drawable-ldpi区别: (1)drawable-hdpi里面存放高分辨率图片,如WVGA (480x800),FWVGA (480x854...android:anydensity="true"> (b)创建自己layout 系统会根据机器分辨率来分别到这几个文件夹里面去找对应图片...还要在res目录下创建不同layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件编译之后都会写入R.java里,而系统会根据屏幕大小自己选择合适...这里有个插曲,我创建好layout-large以后发现使用800.480屏幕还是调用默认layout,最后才发现layout-large里面所用资源,一定要放入drawable-hdpi里面) 2...如果模拟器尚未启动,可以在Eclipse项目Run as=>Open Run Dialog对话框中设置,如果android模拟器已经启动后,可以使用快捷键F12或Ctrl+F11来切换。

    1.3K90

    android 混淆规则作用,Android代码混淆详解

    一、混淆意义 混淆代码并不是让代码无法被反编译,而是将代码中类、方法、变量等信息进行重命名,把它们改成一些毫无意义名字,同时也可以移除未被使用类、方法、变量等。...2、移除未被使用类、方法、变量等。 二、混淆规则和配置 凡是需要在AndroidManifest.xml中去注册所有类类名以及从父类重写方法名都自动不会被混淆。...shrinkResources会对就是没有被引用文件(经过实测是drawable,layout,实际并不是彻底删除,而是保留文件名,但是没有内容),但是因为需要知道是否被引用所以需要配合mififyEnable...(4)proguard-android.txt和proguard-rules.pro proguard-android.txt:代表系统默认混淆规则配置文件,该文件在/tools/proguard下,...(5)proguard文件夹 代码混淆生成apk之后,项目下面会多出来一个proguard文件夹,proguard文件夹中四个文件作用。

    1.8K30

    华为鸿蒙OS之HelloWorld

    image.png image.png 整体目录结构 gradle:Gradle配置文件,由系统自动生成,一般情况下不需要进行修改。 entry:这个是我们大多数开发中需要用到文件夹。...它目录结构如下所示: image.png libs:导入Java引用包放在这里,比如你需要在项目中使用java发送邮件,可以将mail.jar包放在这里然后导入项目。...src-main-resources:用于存放资源文件。 media:存放项目中需要使用本地多媒体内容,多媒体包括图片,视频,音频等。相当于Android项目中drawable。...graphic:存放shape标签内容,常用于设置background-element背景属性,在Android中是放置在drawable,这里单独列出文件夹进行放置。...build.gradle:entry模块编译配置文件。 src-test:编写测试文件目录。

    59830

    《移动互联网技术》第六章 资源管理: 掌握定制控件样式、界面主题、可绘制资源程序编写方法

    把所有的资源都分类存放在一起以后,还要在程序中把资源提取出来。系统提供了三种访问资源方法。...创建一个round_button.xml文件。它会根据按钮状态来切换使用不同样式(指向不同drawable)来呈现动态效果。...答案:在Android中不能直接打开res/raw目录中数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡某个目录中,然后再打开该数据库文件。...答案:第一种是res下可编译资源文件,这种资源文件系统会在R.java里面自动生成该资源文件ID,(除了raw外,其他资源目录中资源文件都会被编译),这也是为什么将APK文件解压后无法直接查看XML...第二种就是放在assets文件夹下面的原生资源文件,放在这个文件夹下面的文件不会被R文件编译,所以不能像第一种那样直接使用

    9610

    Android使用Android开发应用过程中遇到ViewGroup简单效以及aw和assets文件夹文件(Http协议底层工作)

    然而,定义布局最简单和最有效方法是使用XML文件,这更符合人们阅读习惯。XML与HTML相似,因为它使用XML元素名称来表示视图。...DA70D6" android:layout_weight="2"/> raw和assets文件夹文件 我相信你对这两个文件夹并不陌生...如果我们不想将文件编译成二进制文件,我们可以将文件放在这两个目录中。...两者之间差异如下: Res/raw:该文件将映射到R.java文件,该文件可以通过资源ID直接访问,并且不能具有目录结构,即不能创建文件夹 资产:它不会映射到R.java文件。...它可以有一个目录结构,也就是说,它可以自己创建文件夹 AssetManager am = getAssets(); InputStream is = am.open("filename"); 简单加密处理流程

    66940
    领券