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

为什么没有方法从Drawable对象获取资源名称

从Drawable对象获取资源名称的原因是,Drawable对象并不包含资源名称的信息。Drawable对象是一个抽象类,用于描述可绘制对象的基本属性和方法,而资源名称是在XML资源文件中定义的。

在Android应用程序中,资源名称是由资源ID来表示的,而资源ID是由资源类型和资源名称组成的。例如,一个图片资源的资源ID可能是R.drawable.example_image。因此,Drawable对象并不包含资源名称的信息,因为它只包含资源ID的信息。

如果需要从Drawable对象获取资源名称,可以使用反射来获取Drawable对象的资源ID,然后通过资源ID来获取资源名称。但是,这种方法并不推荐使用,因为它可能会导致应用程序的性能下降和不稳定的行为。

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

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

相关·内容

Android getResources的作用和须要注意点

= getResources().getDrawable(R.drawable.image); 一開始不是非常理解为什么用 getResources()这种方法就能够获取存在系统的资源。...于是看了一下文档和翻阅了一下资料: 比如:把资源文件放到应用程序的/raw/raw下,那么就能够在应用中使用getResources获取资源后,以openRawResource方法(不带后缀的资源文件名称...简写 InputStream fs =this.getResources().openRawResource(R.raw.kb); (资源文件名称为kb.html, 不须要带后缀.html) InputStreamReader...文件夹下的png或者bmg //得到Resources对象 Resources r = this.getContext().getResources(); //以数据流的方式读取资源 Inputstream...当须要使用的xml资源的时候,就能够使用context.getResources().getDrawable(R….资源的地址如:R.String.ok); 当你方法里面没有Context參数,能够 this.getContext

48810

求知 | Android资源加载的那些事 - 小试牛刀

具体而言,当我们获取资源时,底层会调用相应的原生方法将读取到的资源信息写入其中,以便后续的判断与使用; AssetsManager 资源管理器,用于读取打包到 Apk 内部的资源文件。...AssetsManager 去底层获取相应的文本资源,并将其保存到 TypedValue 中。...如果此次获取的文本资源是字符串类型,则直接字符串常量池中去取,否则将取到的文本资源转为字符串后返回。...getDrawable getDrawable(R.drawable.xxx) 用于资源文件中获取可绘制对象,具体伪源码如下: 当我们调用 getDrawable() 时,内部先会通过 getValueForDensity...判断当前 drawable 是否为颜色drawable; 如果当前没有加载 drawable &&当前drawable 已缓存 ,直接返回该drawable当前缓存中取出当前 drawable

53720

求知 | Android资源加载的那些事-小试牛刀

为什么同一个drawable界面更改了透明度,其他界面也会生效? 如果你对上述问题依然存疑,那本文可能会对你有所帮助。...具体而言,当我们获取资源时,底层会调用相应的原生方法将读取到的资源信息写入其中,以便后续的判断与使用; AssetsManager 资源管理器,用于读取打包到 Apk 内部的资源文件。...AssetsManager 去底层获取相应的文本资源,并将其保存到 TypedValue 中。...如果此次获取的文本资源是字符串类型,则直接字符串常量池中去取,否则将取到的文本资源转为字符串后返回。...getDrawable getDrawable(R.drawable.xxx) 用于资源文件中获取可绘制对象,具体伪源码如下: 当我们调用 getDrawable() 时,内部先会通过 getValueForDensity

56250

Android图片相关

作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。...Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。...bitmap=BitmapFactory.decodeResource(res, id); (3)通过图片的名称获得图片的id(两种方法) Resources res = context.getResources...bitmap; } 2) 资源获取Bitmap Resources res=getResources(); Bitmap bmp=BitmapFactory.decodeResource(res,...你的手机屏幕有那么大但是他会将图片拉伸,当加载图片后让你感觉该屏幕没有实际的大小,而如果将图片放到drawable—hdpi中则该问题就不会存在了。

70430

Android资源那些事儿

TextView) findViewById(R.id.text_view); bn = (Button) findViewById(R.id.bn); //通过getResources()方法获取到...如果想要在java代码中访问到实际的图片Drawable对象,而不是R类中int类型的索引,可以利用Resources类提供的```Drawable getDrawable(int id)方法。...该方法可以根据R类中的id获取到实际的Drawable对象。 StateListDrawable资源 顾名思义,StateList就是一个state(状态)的集合。...当然,不止是TextView可以用ShapeDrawable作为背景,支持将drawable对象作为背景的所有组件都可以。其中各项属性的名称可谓见名知意,不再赘述。...ClipDrawable资源 ClipDrawable表示其他位图(注意是位图)上clip(截取)的一个图片片段。 定义时的根元素是。

84020

APK安装流程详解1——有关安装ing的实体类概述

1、重要成员变量简介: public int icon:获取该组件项在R文件中drawable资源id值,对应的是"android:icon"属性,如果不设置为0。...public String name:获取该组件项的公共名称,对应的是"android:name" public int banner:获取该组件项在R文件中drawable资源id值,对应是"android...public Drawable loadLogo(PackageManager pm):返回该组件项的大图标,通过PackageManager的getDrawable()方法获取logo对应的Drawable...如果当前组件没有一个则它默认为false(没有任何表明要组件的准确名称来启动),exported=false表明当前组件只能被当前应用内组件启动...final int getIconResourceInternal():注意这个方法的作用域是"包内",返回匹配的图标资源标识符,如果匹配了直接使用,没有匹配使用应用程序图标 public final

1.5K30

Android中一张图片占据的内存大小是如何计算提问正文推荐阅读

,当然在 api 19 之后有另外一个方法,而且当 bitmap 是复用时获取的大小含义也有些变化,这些特殊场景就不细说,感兴趣自行查阅。...原图高度 * (设备的 dpi / 目录对应的 dpi ) 新图的宽度 = 原图宽度 * (设备的 dpi / 目录对应的 dpi ) 目录名称与 dpi 的对应关系如下,drawable 没带后缀对应...其实,有空去看看 BitmapFactory 的源码,确实也只有 decodeResource() 方法内部会根据 dpi 进行分辨率的转换,其他 decodeXXX() 就没有了。...,只获取 Bitmap 对象 1952640B(1.86MB) Glide 图片位于磁盘中,设备dpi=240,设备1dp=1.5px,显示到全屏控件(1920*984) 7557120B(7.21MB...) 可以看到,Glide 的处理与 fresco 又有很大的不同: 如果只获取 bitmap 对象,那么图片占据的内存大小就是按原图的分辨率进行计算。

1.6K20

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

工程的角度来看,把资源代码中分离出来,使得程序更容易维护,同时也可以实现界面和程序逻辑的分离,可以让界面设计师与程序员并行工作,提高了开发的效率。...R后面的第一级符号表示资源的类型。在程序中,经常将R类引用的资源传给findViewById函数,以此来获取控件对象。 用Resource类访问资源 采用代码来访问资源,主要用到了Resource类。...shape drawable 采用XML形式的drawable资源,不需要考虑资源对象的像素密度,它可以适应各种分辨率的设备。首先通过shape drawable来定制一个圆形按钮。...复制的基本方法是使用getResources( ).openRawResource方法获得res/raw目录中资源的InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中...答案:第一种是res下可编译的资源文件,这种资源文件系统会在R.java里面自动生成该资源文件的ID,(除了raw外,其他资源目录中的资源文件都会被编译),这也是为什么将APK文件解压后无法直接查看XML

7410

Android-Bitmap

"获取Bitmap的高为:"+bitmap.getHeight() ); Log.e(TAG, "获取图片所在的Drawable分辨率为:"+options.inDensity+"获取屏幕的像素密度为...image.png 可以看到将同一图片放在不同分辨率的Drawable文件夹下所占用的内存是不同的,Drawable分辨率越高所占内存越小。为什么会这样呢?...= 原图宽度 * (设备的 dpi / 目录对应的 dpi ) 录名称与 dpi 的对应关系如下,drawable 没带后缀对应 160 dpi: ?...,我们这里就不测试了,直接总结一下: (1):同一图片,在同一台设备中,如果图片放在 res 内的不同资源目录下,那么图片占用的内存空间是会不一样的,通常是drawable文件夹分辨率越高,内存越小...,该方法可以不主动调用,因为垃圾回收器会自动收集不可用的Bitmap对象进行回收。

1.4K20

Android插件化浅析

本博客主要从以下几个方面对插件化进行解析: Ø  为什么会提出插件化? Ø  插件化概述 Ø  插件化例子 1.      为什么会提出插件化?...三种方式其实主要是解决两个方面的问题: 1,加载插件中的类, 2,加载插件中的资源. 第一个加载类的问题,这三个方式都可以很好的解决.但目前三种方式都没有很完美的解决第2个问题....2.插件上下文加载资源 int resId = findResoucesId(pluginContext, position); if (resId !...(drawable); } } 需要加载插件应用中的资源,那就必须使用到插件的上下文,所以我定义了一个方法findPluginContext,来获取插件应用的Context,逻辑如下: private...最后我还定义了一个方法findResoucesId,里面逻辑就是通过反射机制,使用插件的Context来获取R.java文件下的静态类drawable,返回插件应用里的图片id,代码如下: private

54320

Android的动态加载插件

下的文件,需要用Resource对象,但是apk是未安装的,宿主并没有对应的resId,因此获取资源需要进行反编译,反编译需要对应的插件的包名,就是反编译R资源。...drawable资源 * * @param resName 资源名称 */ public int getColor(String resName) { int outResId...drawable资源 * * @param resName 资源名称 */ public Drawable getDrawable(String resName) { int...总结一下: 1、加载插件资源:利用反射获取插件的AssertManager对象,然后利用获取到的AssertManager对象创建对应的插件包的Resource资源对象。...接着创建插件包的DexClassLoader对象,利用DexClassLoader加载资源的R类,通过反射拿到插件的资源resId,再利用插件的Resource对象获取对应的资源id的资源

1.9K30
领券