相关疑难解决方法(0)

android资源和资源ID之间的映射如何工作?

Android的神奇之处在于只通过R.id.XXX找到合适的资源.

AFAIK,资源被编译成二进制格式,那么这个映射逻辑如何在底层工作呢?

也许它的工作原理如下:

例如,在layout1.xml中,我们得到:

<Button android:id="@+id/button1" >
Run Code Online (Sandbox Code Playgroud)

和AAPT将在R.java中生成:

public static final int button1=0x7f05000b;
Run Code Online (Sandbox Code Playgroud)

当生成*.apk时,@ + id/button1将替换为"0x7f05000b".

因此,当我们打电话时:

findViewById(R.id.button1);
Run Code Online (Sandbox Code Playgroud)

我们基本上仍然根据ID进行搜索,尽管ID是一个像0x7f05000b的数字.

谢谢!

我真正想知道的是,如何将资源id整数解析为资源内容?换句话说,Android运行时如何以资源ID作为唯一线索来定位资源内容?

例如,如何找到具有资源ID的可绘制图片?或者如何找到具有资源ID的字符串值?

android android-resources

71
推荐指数
3
解决办法
2万
查看次数

Android上的res/values/public.xml文件有什么用?

我在Google上搜索过,但找不到任何相关结果.

我还检查了官方Android文档,这个页面(所有可用资源)都是我能找到的.我在这个页面上找到的相关链接(到res/values/目录)是:

这些页面不会告诉您有关该res/values/public.xml文件的任何信息.
以下是我为此类文件找到的示例.

小片段

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <public type="attr" name="commentTextColor" id="0xAA010007" />
    <public type="drawable" name="add_icon_bl" id="0xAA020000" />
    <public type="layout" name="act_date_picker" id="0xAA030001" />
    <public type="anim" name="activity_slide_from_bottom" id="0xAA040000" />
    <public type="xml" name="pref_menu" id="0xAA050000" />
    <public type="raw" name="alert_bell_animation_bl" id="0xAA060000" />
    <public type="array" name="taskRepeat" id="0xAA070000" />
    <public type="color" name="theme_main_color_bl" id="0xAA080000" />
    <public type="string" name="no_internet" id="0xAA0a0001" />
    <public type="id" name="page1" id="0xAA0d0015" />
</resources>
Run Code Online (Sandbox Code Playgroud)

type属性中可以看出,它包含了通常放在 …

android android-resources

56
推荐指数
2
解决办法
3万
查看次数

标签 统计

android ×2

android-resources ×2