android 资源ID】的更多相关文章

在编译的时候,AAPT会扫描你所定义的所有资源(在不同文件中定义的以及单独的资源文件),然后给它们指定不同的资源ID.资源ID 是一个32bit的数字,格式是PPTTNNNN , PP代表资源所属的包(package) ,TT代表资源的类型(type),NNNN代表这个类型下面的资源的名称. 对于应用程序的资源来说,PP的取值是0×77.TT 和NNNN 的取值是由AAPT工具随意指定的–基本上每一种新的资源类型的数字都是从上一个数字累加的(从1开始):而每一个新的资源条目也是从数字1开始向上累…
转自:http://www.jianshu.com/p/89687f618837 原因分析   当我们在Android依赖库中使用switch-case语句访问资源ID时会报如下图所示的错误,报的错误是case分支后面跟的参数必须是常数,换句话说出现这个问题的原因是Android library中生成的R.java中的资源ID不是常数: 打开library中的R.java,发现确实如此,每一个资源ID都没有被声明为final: library R.java   但是当你打开你的主工程,在onCl…
在多个有规律的资源ID获取的时候,可以使用getIdentifier方法来获取,来获取. 用到场景:工具类打成.jar包的时候,有时候会需要引用到res中的资源,这时候不能将资源一起打包,只能通过反射机制动态的获取资源. public class Resources int getIdentifier (String name, String defType, String defPackage) Return a resource identifier for the given resour…
使用getIdentifier()获取资源Id Android中可以使用getIdentifier()获取资源ID ex: 根据图片名称获取图片Id private int getImageResId(String imageName) { int resID = getResources().getIdentifier(imageName, "drawable", "com.xxxxxx"); return resID; } (注意,imageName不需要有后缀…
1.前言 Android Studio对模块化开发提供的一个很有用的功能就是可以在主项目下新建库项目(Module),但是在使用库项目时却有一个问题就是资源ID冲突,因为编译时SDK会自动帮我们处理这个问题,所以一般我们不会察觉到,但是在某些情况下,我们需要意识到这个问题的存在. 比如,在新建的库项目中使用如下代码: public void onButtonClick(View view) { switch (view.getId()) { case R.id.button_1: break;…
有时候我们想动态的根据一个字符串资源名获得到对应的资源id,如根据不同的图片名称获得对应的图片,此时就应该考虑如何实现. 大家知道,在编译Android工程时,系统会自动生成一个静态资源类R,里面根据不同的资源类型有不同的静态内部类,如id,drawable等等,而每个内部类中存放的是对应的16进制的静态资源id属性,而这些属性的属性名就是资源名.常用的方法有两个: 方法一: 利用getResources().getIdentifier(String name,String defType,St…
有时候我们想动态的根据一个资源名获得到对应的资源id,就可以使用getResources().getIdentifier()方法来获取该id.然后再使用该id进行相关的操作. 1.Demo示例 下面用一个小Demo来讲解如何使用getResources().getIdentifier()方法来获取该id. 例如,新建一个Android项目,项目结构部分截图如下所示: MainActivity代码如下: package com.oyp.demo; import android.os.Bundle;…
背景 在某些应用中,为了实现应用apk资源放入重复利用,或者使用反射得到本应用的资源,需要使用反射方式获得,但Resources类中也自带了这种获取方式,并且功能更加强大 你可以获取string,color,drawable,raw,xml等文件,因此也就意味着,这里可以获取的资源是res中已定义的资源,对于控件id的获取,暂时无法做到 public int getIdentifier(String name, String defType, String defPackage) { if (n…
当我们获取网络数据的时候,解析之后往往都是一个字符串,而不是资源id,所有我们没有办法直接使用,只能通过名称来获取到资源id, package com.example.administrator.demo; import android.content.Context; /** * Created by Administrator on 2017/8/27 0027. */ public class GetResourcesUtils{ /** * 获取资源文件的id * * @param co…
Android插件化(六): OpenAtlasの改写aapt以防止资源ID冲突 转 https://www.300168.com/yidong/show-2791.html   核心提示:引言Android应用程序的编译中,负责资源打包的是aapt,如果不对打包后的资源ID进行控制,就会导致插件中的资源ID冲突.所以,我们需要改写aapt的源码,以达到通过某种方式传递资源ID的Package ID,通过aapt打包时获取到这个Package ID并且应用才插件资源的命名 引言 Android应…