android 资源文件的使用说明(1)

android:text=“@string/hello”

这里使用"@"前缀引入对一个资源的引用–在@[package:]type/name形式中后面的文本是资源的名称。在这种情况下,我们不需要指定包名,因为我们引用的是我们自己包中的资源。type是xml子节点名,name是xml属性名:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. Hello World, HelloDemo!

  4.  

2) 引用系统资源

android:textColor=“@android:color/opaque_red”   指定package: android

3) 引用主题属性

另外一种资源值允许你引用当前主题中的属性的值。这个属性值只能在样式资源和XML属性中使用;它允许你通过将它们改变为当前主题提供的标准变化来改变UI元素的外观,而不是提供具体的值。

android:textColor=“?android:textDisabledColor”

注意,这和资源引用非常类似,除了我们使用一个"?“前缀代替了”@“。当你使用这个标记时,你就提供了属性资源的名称,它将会在主题中被查找–因为资源工具知道需要的属性资源,所以你不需要显示声明这个类型(如果声明,其形式就是?android:attr/android:textDisabledColor)。除了使用这个资源的标识符来查询主题中的值代替原始的资源,其命名语法和”@"形式一致:?[namespace:]type/name,这里类型可选。

5. 替换资源(为了可替换的资源和配置)

个人理解这个替换资源主要用于适应多种规格的屏幕,以及国际化。对于这部分的内容,请参考 http://androidappdocs.appspot.com/guide/topics/resources/resources-i18n.html,以后再研究!

6. Color Value

语法:

  1. #color_value

可以保存在res/values/colors.xml (文件名可以任意)。

xml引用:android:textColor=“@color/color_name”

Java引用:  int color = Resources.getColor(R.color.color_name)

其中#color_value有以下格式(A代表Alpha通道):

#RGB

#ARGB

#RRGGBB

#AARRGGBB

xml示例(声明两个颜色,第一个不透明,第二个透明色):

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. #f00

  4. #80ff0000

  5.  

7.Color Drawables

语法:

  1. color_value

可以保存在res/values/colors.xml。

xml引用:android:background=“@drawable/color_name”

java引用:Drawable redDrawable = Resources.getDrawable(R.drawable.color_name)

color_name和上面的一样。个人认为,一般情况下使用color属性,当需要用到paintDrawable时才使用drawable属性。

xml示例:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. #f00

  4. #80ff0000

  5.  

8. 图片

一般放在res/drawable/里面。官方提示png (preferred), jpg (acceptable), gif (discouraged),看来一般使用png格式比较好!

xml引用   @[package:]drawable/some_file

java引用 R.drawable.some_file      引用是不带扩展名

9. dimension

语法:

  1. dimen_value单位

一般保存为res/values/dimen.xml。

度量单位:

px(象素): 屏幕实际的象素,常说的分辨率1024*768pixels,就是横向1024px, 纵向768px,不同设备显示效果相同。

in(英寸): 屏幕的物理尺寸, 每英寸等于2.54厘米。

mm(毫米): 屏幕的物理尺寸。

pt(点)  : 屏幕的物理尺寸。1/72英寸。

dp/dip  : 与密度无关的象素,一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。但dp和px的比例会随着屏幕密度的变化而改变,不同设备有不同的显示效果。

sp          : 与刻度无关的象素,主要用于字体显示best for textsize,作为和文字相关大小单位。

XML: android:textSize=“@dimen/some_name”

Java: float dimen = Resources.getDimen(R.dimen.some_name)

xml示例:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. 1px

  4. 2dp

  5. 16sp

  6.  

10. string

下面是官方给出的正确/错误的例子:

  1. //不使用转义符则需要用双引号包住整个string

  2. “This’ll work”

  3. //使用转义符

  4. This\'ll also work

  5. //错误

  6. This won’t work!

  7. //错误 不可使用html转义字符

  8. XML encodings won’t work either!

对于带格式的string,例如在字符串中某些文字设置颜色,可以使用html标签。对于这类型的string,需要进行某些处理,在xml里面不可以被其他资源引用。官方给了一个例子来对比普通string和带格式string的使用:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. Welcome!

  4. We are so glad to see you.

  5.  

Xml代码

  1. <TextView

  2. android:layout_width=“fill_parent”

  3. android:layout_height=“wrap_content”

  4. android:textAlign=“center”

  5. android:text=“@string/simple_welcome_message”/>

Java代码

  1. // Assign a styled string resource to a TextView on the current screen.

  2. CharSequence str = getString(R.string.styled_welcome_message);

  3. TextView tv = (TextView)findViewByID(R.id.text);

  4. tv.setText(str);

另外对于带风格/格式的string的处理,就麻烦一点点。官方给了一个例子:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. %1KaTeX parse error: Expected 'EOF', got '&' at position 15: d results for &̲lt;b>&amp;quot;…s&quot;</b>

  4.  

这里的%1 d 是个十进制数字, d是个十进制数字,%2 d是个十进制数字,s是字符串。当我们把某个字符串赋值给%2$s之前,需要用 **htmlEncode(String)**函数处理那个字符串:

  1. //title是我们想赋值给%2$s的字符串

  2. String escapedTitle = TextUtil.htmlEncode(title);

然后用String.format() 来实现赋值,接着用fromHtml(String) 得到格式化后的string:

  1. String resultsTextFormat = getContext().getResources().getString(R.string.search_results_resultsTextFormat);

最后

题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等学习资料。

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

Android开发8年,阿里、百度一面惨被吊打!我是否应该转行了?

【Android进阶学习视频】、【全套Android面试秘籍】

希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

码分析等学习资料。

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

[外链图片转存中…(img-hq2oAHkw-1714333636907)]

【Android进阶学习视频】、【全套Android面试秘籍】

希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值