android获取string.xml的值

为什么需要把应用中出现的文字单独存放在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中字符串和数值

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World, MainActivity!</string>

    <string name="app_name">TestExample01</string>

</resources>

在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)

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string-array name="sports">

  <item>足球</item>

  <item>篮球</item>

  <item>太极</item>

  <item>冰球</item>

    </string-array>

</resources>

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

 

 

3.定义颜色(colors.xml)

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <color name="black">#FFFFFF</color>

</resources>

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

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

 

 

4.定义尺寸(dimens.xml)

<?xml version="1.0" encoding="utf-8"?>

<resources>

   <dimen name="height">80dip</dimen>

</resources>

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

 

 

5.定义样式(styles.xml)

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <style name="sharpText">

  <item name="android:textSize">18sp</item>

  <item name="android:textColor">#000000</item>

    </style>

</resources>

android获取string.xml的值


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(); 

            }

    } 

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

转载于:https://www.cnblogs.com/MiniHouse/p/3645123.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客 怕npy的牛牛(双指针)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9556/B 来源&#xff1a;牛客网 题目描述 牛牛非常怕他的女朋友&#xff0c;怕到了走火入魔的程度&#xff0c;以至于每当他看到一个字符串同时含有n,p,y三个字母他都害怕的不行。 现在…

Flask入门之上传文件到本地服务器

Flask入门之上传文件到服务器今天要做一个简单的页面&#xff0c;可以实现将文件 上传到服务器&#xff08;保存在指定文件夹&#xff09;#Sample.py1 # coding:utf-82 3 from flask import Flask,render_template,request,redirect,url_for4 from werkzeug.utils import secur…

对象的三种状态

来自为知笔记(Wiz)转载于:https://www.cnblogs.com/zmpandzmp/p/3649196.html

Cygwin中如何像在Ubuntu中一样安装软件

cygwin作为windows下模拟Linux环境的的工具&#xff0c;使得我们能在windows下非常方便的使用Linux的命令和工具&#xff0c;下面讲讲怎样在cygwin添加不支持的命令。 1.首先安装cygwin&#xff1a;我们可以到Cygwin的官方网站下载Cygwin的安装程序&#xff0c;地址是&#xff…

LeetCode 321. 拼接最大数(单调栈)*

文章目录1. 题目2. 解题1. 题目 给定长度分别为 m 和 n 的两个数组&#xff0c;其元素由 0-9 构成&#xff0c;表示两个自然数各位上的数字。 现在从这两个数组中选出 k (k < m n) 个数字拼接成一个新的数&#xff0c;要求从同一个数组中取出的数字保持其在原数组中的相对…

pandas数据分析选则接近数值的最接优方案

import numpy as np import pandas as pd# pandas数据分析选则接近数值的最接优方案# 1.准备数据 CHILD_TABLE (720, 750) CHIDL_STOOL (300, 350) CHILD_PLAY_LEN (300, 400) CHILD_TENT (1100, 1300) # 2.遍历循环&#xff0c;添加到列表中 sum_length_lst [] play_lst …

iOS开发者有价值的工具集

转载于&#xff1a;http://www.cocoachina.com/applenews/devnews/2014/0307/7936.html我一直比较推崇聪明地工作要远胜于刻苦地工作。使用正确的工具可以帮你更好地解决问题&#xff0c;直达目标。我们都遇见过一些功能非常强大但又价值不菲的工具&#xff0c;虽然价格贵点&am…

Python数据分析之pandas学习

Python中的pandas模块进行数据分析。 接下来pandas介绍中将学习到如下8块内容&#xff1a;1、数据结构简介&#xff1a;DataFrame和Series2、数据索引index3、利用pandas查询数据4、利用pandas的DataFrames进行统计分析5、利用pandas实现SQL操作6、利用pandas进行缺失值的处理7…

牛客 String II

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9715/B 来源&#xff1a;牛客网 给出一个仅包含小写字母的字符串s&#xff0c;你最多可以操作k次&#xff0c;使得任意一个小写字母变为与其相邻的小写字母&#xff08;ASCII码差值的绝对…

STM32的RTC万年历显示问题

博客整理后写出来的,有点乱,大家见谅! 想让串口输出万年历效果.每次秒刷新一次 结果是串口软件一直输出,看起来很难受 先讲一讲C代码的\r和\n的区别 \r 就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉 \n 是回车&#xff0b;换行 把光标 先移到 行首 然后换到下一…

牛客 牛牛做除法II

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9715/A 来源&#xff1a;牛客网 牛牛想知道在[0,n]范围中&#xff0c;选取一个最大的数x&#xff0c;满足x % a b&#xff0c;不过这个范围可能会很大&#xff0c;牛牛不知道该如何解决…

【原创】oracle的tpc-c测试及方法

大家好&#xff0c;很高兴来到博客园分享自己的所见所得。希望和大家多多交流&#xff0c;共同进步。 本文重点在于简介使用BenchmarkSQL对oracle进行tpcc的测试步骤&#xff0c;只是一个简单入门的过程。 开源测试工具&#xff1a;BenchmarkSQL。 平台&#xff1a;windows 之前…

牛客 Bang! Bang!(动态规划)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9715/C 来源&#xff1a;牛客网 音游狂热爱好者牛牛接到了一个新的任务&#xff0c;那就是给一张乐谱设计重音符。每当玩家敲击重音符的时候就会发出"bang"的美妙声音!! 每一…

Andorid 反编译App

转载请标明出处&#xff1a;http://blog.csdn.net/lmj623565791/article/details/23564065 开发的过程中&#xff0c;有时候可能会去使用别的app里面的图片&#xff0c;参考布局甚至代码等&#xff0c;但是一般的.apk都是经过代码混淆的&#xff0c;这里分享下使用一些工具进行…

Ubuntu Linux系统下搭建自己的Web服务器

经常被拿来当服务器的有CentOS、Ubuntu......考虑到自己只有Ubuntu的镜像并且只是自己做一些简单的测试使用&#xff0c;所以选择的版本是Ubuntu 14.04 LTS。在这个平台上搭建自己的Web服务器。 相比在Windows下的wamp集成环境&#xff0c;Linux系统下同样有LAMP&#xff0c;不…

天池 在线编程 安排面试城市(贪心)

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/210874425247820050/215397455965131520 今天有N个面试者需要面试&#xff0c;公司安排了两个面试的城市A和B&#xff0c;每一个面试者都有到A城市的开销costA和到B城市的开销costB。 公司需要…

天池 在线编程 捡胡萝卜(模拟)

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/210874425247820050/215397455965131519 给定一个n * m 的矩阵 carrot, carrot[i][j] 表示(i, j) 坐标上的胡萝卜数量。 从矩阵的中心点出发&#xff0c;每一次移动都朝着四个方向中胡萝卜数量…

VMware中ubuntu虚拟机与windows的端口映射,共享一个IP地址

在ubuntu虚拟机中&#xff0c;运行了meteor的后台程序&#xff0c;需要终端进行连接&#xff0c;需要进行ubuntu虚拟机与windows的端口映射&#xff08;虚拟机与主机共享IP地址&#xff09;。 下面为设置步骤&#xff1a; 1.点击编译&#xff0c;虚拟网络编辑器2.在虚拟网络编辑…

LeetCode 1678. 设计 Goal 解析器

文章目录1. 题目2. 解题1. 题目 请你设计一个可以解释字符串 command 的 Goal 解析器 。 command 由 "G"、"()" 和/或 "(al)" 按某种顺序组成。 Goal 解析器会将 “G” 解释为字符串 “G”、 “()” 解释为字符串 “o” &#xff0c; “(al)” …

Jmeter使用入门

Jmeter简介Jmeter的基本概念百度百科&#xff1a;Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 它可以用于测试静态和动态资源&#xff0c;例如静态文件、Jav…