很多时候我们感性Google在设计Android时遵守了大量MVC架构方式,可以让写公共代码、美工和具体逻辑开发人员独立出来。有关Android的资源文件values/strings.xml中如何实现格式化字符串呢? 这里Android123举个简单的例子,以及最终可能会用到哪些地方。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">cwj_Demo</string>
<string name="hello">android开发网</string>
</resources>
上面是一段简单的字符串资源文件,没有用到格式化,因为比较简单直接描述了意思,当我们设计一个类似 Delete xxx File ? 的时候,我们可能需要在Java中动态获取 xxx 的名称,所以定义资源时使用格式化可以轻松解决,不需要一堆String去拼接或StringBuffer一个一个append这样的愚蠢方法,看例子
<string name="alert">Delete %1$s File</string> 这里%1$s代表这是一个字符串型的,如果是整数型可以写为%1$d,类似printf这样的格式化字符串函数,当然如果包含了多个需要格式化的内容,则第二个可以写为%2$s或%2$d了,那么最终在Java中如何调用呢? 看下面的例子:
例一: 整数型的
<string name="alert">I am %1$d years old</string> 定义的是这样的
当然,我们杜绝意外情况,比如冒出个secret这样的string类型的,注意上面是%1$d不是%1$s,所以默认标准的合并成为
int nAge=23;
String sAgeFormat = getResources().getString(R.string.alert);
String sFinalAge = String.format(sAgeFormat, nAge);
这样执行完后,就组成了 I am 23 years old,是不是很方便啊. 当然了,下面看下String字符串时的情况.
例二: 字符串型的
String sName="cwj"
String sCity="Shanghai"
资源定义为 <string name="alert2">My name is %1$s , I am form %2$s</string>
则Java中只需要
String sInfoFormat = getResources().getString(R.string.alert2);
String sFinalInfo=String.format(sInfoFormat, sName, sCity);
我们看到了整个,整个定义类似MFC的CString::Format或Mac OS中的NSLog,但是需要显示类似C#中那样显示的标出参数的数字,比如%1或%n,这里数字代表参数的第n个。本行最终sFinalInfo显示的内容为
My name is cwj , I am form Shanghai 。
分享到:
相关推荐
### Android中String资源文件的format详解 在Android应用开发过程中,资源文件的高效利用与管理对于提高开发效率、降低维护成本具有重要意义。其中,`strings.xml`文件作为存放字符串资源的重要组成部分,在实际...
1. **资源文件**:在Android中,我们可以将常量文本存储在资源文件中,通常这些资源文件位于项目的`res/values/strings.xml`目录下。 2. **占位符**:在`strings.xml`文件中,可以使用特定格式的占位符来表示需要...
总结起来,Android字符串资源文件中的format方法允许我们在资源文件中定义格式化字符串,然后在代码中通过`String.format()`方法填充具体的值。这种做法有助于代码的清晰组织,减少拼接操作,并且支持多种类型的格式...
- `getString()`: 从资源文件中获取字符串。 - `getStringArray()`: 获取字符串数组资源。 - `getQuantityString()`: 获取基于数量的字符串资源,用于复数形式。 ### 10. 资源ID转换为字符串 `Resources.getText...
在Android开发中,String资源文件是管理应用内文本的重要手段,它允许开发者将所有文本集中管理,便于国际化和本地化。本文将详细讲解如何在Android String资源文件中插入动态值,以及在代码中如何使用这些格式化的...
在Android开发中,`string.xml` 文件是应用中管理字符串资源的重要部分,它允许开发者集中存储和管理应用程序中的文本内容,提高代码可读性和维护性。`%1$s` 和 `%d\%` 是在 `string.xml` 文件中常用的格式化符号,...
在Android应用开发中,资源管理是非常重要的一部分,其中string.xml文件用于存储应用程序中使用的文本字符串。这不仅方便了代码的维护,还支持多语言环境。本文将深入探讨Android string.xml中的替换方法,以及如何...
本篇文章将详细阐述如何在Android中使用XML文件来定义字符串资源。 首先,字符串资源通常存储在`res/values`目录下的`strings.xml`文件中。这个文件是一个XML文档,包含了多个字符串元素,每个元素都代表一个独立的...
3. **处理结果**:在onActivityResult方法中获取选定文件的Uri,并转换为输入流: ```java Uri selectedFileUri = data.getData(); InputStream inputStream = getContentResolver().openInputStream...
对于`res`目录下的资源,可以使用`android.resource://[package_name]/[resource_type]/[resource_id]`格式,但通常不推荐这种方法,因为资源会被编译为二进制格式,不适合直接用作URL。 另外,如果需要处理点击...
Android资源文件是应用程序开发中不可或缺的部分,它们包含了各种类型的数据,如XML、图像、音频等,这些资源在编译时被打包进应用,并在运行时通过`Resources`类进行访问。资源的使用不仅可以提高代码的可读性和可...
TypedArray提供了一种从XML资源文件中一次性获取多个值的方法,常用于自定义View。例如,定义一个属性集: ```xml <attr name="textColor" format="color"/> <attr name="textSize" format="dimension"/> ``...
例如,Android提供了`getString()`方法来获取字符串资源,并且可以使用`String.format()`来动态插入值。对于加密解密,可以使用Java的内置加密库,如`Cipher`和`KeyGenerator`。对于TextView的颜色设置,可以使用`...
- **`InputStream openRawResource(int id)`**:根据资源ID打开一个原始资源文件的输入流,对应的资源位于`res/raw/`目录下。 - **`void parseBundleExtra(String tagName, AttributeSet attrs, Bundle outBundle)`*...
ExifInterface是Android SDK提供的一种接口,专门用于读取和写入JPEG文件的Exchangeable Image File Format (EXIF)元数据。下面将详细解释如何使用ExifInterface来读取图片的地理位置信息。 首先,了解什么是EXIF...
1. **String资源**: - `String`资源是单一的文本字符串,可以在应用程序的各个部分被引用。它们通常存储在`res/values/strings.xml`文件中,通过XML定义。例如,定义一个名为`hello`的字符串: ```xml <string...
这里`getString(R.string.my_text)`获取到了`strings.xml`中定义的字符串资源,然后使用`String.format()`方法对其中的占位符进行了替换,最终得到格式化的字符串。 ### 三、进阶技巧与注意事项 #### 3.1 多个占位...
在`strings.xml`中,我们还可以使用格式化字符串,例如`<string name="c20_my_name">My name is %1$s %2$s</string>`,这里的`%1$s`和`%2$s`是占位符,可以通过`String.format()`方法替换为实际值。例如,`String....
这里,`getString(R.string.my_text)`获取了`strings.xml`中定义的字符串资源,然后通过`String.format()`方法将其格式化。最终得到的`formattedText`变量将包含完整的文本:“Thanks for visiting oschina. Your ...