为什么需要把应用中出现的文字单独存放在string.xml文件中呢?

一:是为了国际化,当需要国际化时,只需要再提供一个string.xml文件,把里面的汉子信息都修改为对应的语言(如,English),再运行程序时,android操作系统会根据用户手机的语言环境和国家来自动选择相应的string.xml文件,这时手机界面就会显示出英文。这样做国际化非常的方便。

二:为了减少应用的体积,降低数据的冗余。假设在应用中要使用"我们一直在努力"这段文字1000次,如果在每次使用时直接写上这几个字,这样下来程序中 将有70000个字,这70000个字占136KB的空间。而由于手机的资源有限,其CPU的处理能力及内存是非常有限的,  136KB 对手机内存来说是个不小的空间,我们在做手机应用是一定要记住“能省内存就省内存”。而如果将这几个字定义在string.xml中,在每次使用到的地方通过Resources类来引用该文字,只占用到了14B,因此对降低应用体积效果是非常有效地.当然我们可能在开发时可能并不会用到这么多的文字信息,但是,作为手机应用开发人员,我们一定要养成良好的编程习惯。

获取string.xml文件里面的值有几个不同的地方。

1.在AndroidManifest.xml与layout等xml文件里:

android:text="@string/resource_name"

2.在activity里:

方法一:this.getString(R.string.resource_name);

方法二:getResources().getString(R.string.resource_name);

3.在其他java文件(必须有Context或pplication)

方法一: context.getString(R.string.resource_name);

方法二: application.getString(R.string.resource_name);

android中string.xml文件的使用

1.在程序中获取string.xml中字符串和数值

Hello World, MainActivity!

TestExample01

在Activity中使用:

String appName=(String) this.getResources().getText(R.string.app_name);

或者:

String appName=(String) this.getResources().getString(R.string.app_name);

2.定义string数组(arrays.xml)

足球

篮球

太极

冰球

----getResources().getStringArray(R.string.sports);

3.定义颜色(colors.xml)

#FFFFFF

---getResources().getDrawable(R.string.black);

---getResources().getColor(R.string.black);

4.定义尺寸(dimens.xml)

80dip

---getResource().getDimension(R.string.height);

5.定义样式(styles.xml)

18sp

#000000

assets文件夹资源的访问

assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。

1. 先在Activity里面调用getAssets() 来获取AssetManager引用。

2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。

3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。

4.调用AssetManager.close() 关闭AssetManager。

需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作

以下为从Raw文件中读取:

public String getFromRaw(){

try {

InputStreamReader inputReader = new InputStreamReader(getResources().openRawResource(R.raw.test1));

BufferedReader bufReader = new BufferedReader(inputReader);

String line="";

String Result="";

while((line = bufReader.readLine()) != null)

Result += line;

return Result;

} catch (Exception e) {

e.printStackTrace();

}

}

以下为直接从assets读取

public String getFromAssets(String fileName){

try {

InputStreamReader inputReader = new InputStreamReader(getResources().getAssets().open(fileName) );

BufferedReader bufReader = new BufferedReader(inputReader);

String line="";

String Result="";

while((line = bufReader.readLine()) != null)

Result += line;

return Result;

} catch (Exception e) {

e.printStackTrace();

}

} 当然如果你要得到内存流的话也可以直接返回内存流!

android java获取string.xml_android获取string.xml的值相关推荐

  1. android java file 清理垃圾获取文件大小 删除文件等操作

    这么久没有写博客了,今天给大家分享一些多file文件的操作.一般可以用到清理垃圾获取文件大小 删除文件等操作,可以直接用于工具类里面,直接做操作便可以 public final class FileU ...

  2. android 获取文件夹的字节数,android java file 清理垃圾获取文件大小 删除文件等操作...

    这么久没有写博客了,今天给大家分享一些多file文件的操作.一般可以用到清理垃圾获取文件大小 删除文件等操作,可以直接用于工具类里面,直接做操作便可以 public final class FileU ...

  3. java string出现次数_Java String方法获取字符出现次数及字符最大相同部分示例

    本文实例讲述了Java String方法获取字符出现次数及字符最大相同部分.分享给大家供大家参考,具体如下: package demo; public class Test { public stat ...

  4. java Clob转CLOB_Java获取Oracle中CLOB字段转换成String

    Java获取Oracle中CLOB字段转换成String : try {PreparedStatement stmt = session.connection().prepareStatement(s ...

  5. Java获取当前时间及String、datetime、date相互转化

    一.获取当前系统时间和日期并格式化输出: [java] view plain copy import java.util.Date; import java.text.SimpleDateFormat ...

  6. java获取数字_java 获取String中的数字

    随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法, ...

  7. Android java传递string类型数据给C

    本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...

  8. 使用Java代码在应用层获取Android系统属性

    之前使用Native代码的property_get()/property_set()来获取Android系统属性,现在需要改写到Java上面, 但是System.getProperty() / Sys ...

  9. java dom获取命名空间属性_Java DOM XML解析::获取元素属性值

    如何从元素中提取属性值.我的xml节点是这样写的 &LT nodename attribute ="value">我需要将其解压缩以将其与另一个字符串进行比较. 但由 ...

最新文章

  1. 判断某数组是不是二叉树的后序遍历序列 python递归与非递归解法
  2. gsoap 学习 1-由wsdl文件生成h头文件
  3. Android中LayoutInflater的使用
  4. pytorch转libtorch,全网最全资料
  5. ffmpeg3.4 yuv编码为h264
  6. java保存私钥_如何在Java中使用密钥库来存储私钥?
  7. Python培训的基础知识
  8. 深入理解JavaScript系列(12):变量对象(Variable Object)
  9. PyTorch 深度学习:38分钟快速入门——RNN 做图像分类
  10. Apollo通过客户端openApi方式更新、获取、发布配置
  11. 考前突击!等级考试高分攻略!(整理版)
  12. 【前端】js代码模拟用户键盘鼠标输入
  13. opencv——Mat 矩阵数据类型转换convertTo
  14. 基于抛物线过渡(梯形加减速)的空间直线插补算法与空间圆弧插补算法(Matlab)
  15. 理解HTC Vive更新——控制相机旋转和位移
  16. 鸟哥的服务器《十三》Web服务器
  17. ADF Faces Core 标记库信息
  18. 计算机网络雨课堂练习11
  19. java中调用谷歌的无界浏览器对页面元素进行截图
  20. Win10 PowerShell,通过SSH公钥远程连接Linux服务器

热门文章

  1. 如何安装最新版本的 SAP ABAP Development Tool ( ADT ) 2021年度更新
  2. :focus-within的冒泡触发
  3. 2020年十月下旬,再次更新了自己的linkedin工作经历
  4. Angular view container删除view实例的过程
  5. 使用Source Monitor检测Java代码的环复杂度
  6. local path of sap-ui-core-less-140903345-dbg.js
  7. Marketing Cloud里Odata请求响应结构的解析
  8. SAP Odata batch操作,只支持multipart_mixed类型的content-type
  9. how to consume a webservice via ABAP proxy
  10. SAP Customer Experience Extensibility gold rule