当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 一、实现效果:最近在项目中需要做类似于上图显示的效果,里面的数字和称谓是动态获取的,对于这种显示效果,有如下两种解决方案来处理:(1)通过代码动态设置TextView的内

 一、实现效果:

最近在项目中需要做类似于上图显示的效果,里面的数字和称谓是动态获取的,对于这种显示效果,有如下两种解决方案来处理:

(1)通过代码动态设置TextView的内容,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
     * 显示今日状态
     *
     * */
    private void showTodayState( int totalUser, float upRate, String hornor, char level ){
        StringBuilder todayStateStr = new StringBuilder( );
        todayStateStr.append( 您正与 );
        todayStateStr.append( totalUser );
        todayStateStr.append( 位朋友在一起游戏,本周排名提升了 );
        todayStateStr.append( upRate );
        todayStateStr.append( ,获得 );
        todayStateStr.append( hornor );
        todayStateStr.append( 的称号,等级为 );
        todayStateStr.append( level );
        todayStateStr.append( ! );
         
        mTodayStateTxt.setText( todayStateStr );
    }

然后调用该方法:

1
showTodayState( 1234567, 68.376f, 爆头大师, ‘B‘ );

(2)在string.xml文件中定义一个字符串,然后在代码中通过String.format方法来格式化该字符串,比如:

1
<string name="today_state_string">您正与%1$d位朋友在一起游戏,本周排名提升了%2$.3f,获得%3$s的称号,等级为%4$c!</string>

在代码中做如下定义:

1
2
3
4
5
6
7
8
/**
     * 显示今日状态
     *
     * */
    private void showTodayState( int totalUser, float upRate, String hornor, char level ){
        String todayStateStr = String.format( getResources( ).getString( R.string.today_state_string), totalUser, upRate, hornor, level );
        mTodayStateTxt.setText( todayStateStr );
    }

本文介绍第二种处理方式,因为显然第二种处理方式更方便,特别是需要动态改变多个显示状态的时候。

二、字符串资源格式化详细介绍:

1
<string name="today_state_string">您正与%1$d位朋友在一起游戏,本周排名提升了%2$.3f,获得%3$s的称号,等级为%4$c!</string>

从上面这行字符串的定义可以看出,格式化字符串资源的格式为:

%+参数位置+$+格式化类型,其中:

参 数 位 置:从1开始依次编号,String.forma方法的第二个参数为格式化的第一个参数,后面依次递增;

格式化类型:

s 字符串

f 浮点数

d 整型数

c 字符类型

其实懂点C语言的朋友一看就知道和printf的打印输出格式化差不多。

三、注意事项:

1、在string.xml文件中定义好格式化的字符串资源,通过代码动态设置字符串内容时,必须确保String.format方法里面的参数不少于字符串资源中定义的格式化参数个数(实践证明多了参数是不会报异常的),比如在上面的例子中字符串有四个格式化参数,如果代码写成这样:

1
showTodayState( int totalUser, float upRate, String hornor )//少了level参数

则会报如下异常:

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

其他电脑(比如安卓手机/平板电脑)的屏幕坏了,你可能想在安排维修之前紧急访问一些东西。你可以使用android的USB OTG功能(是的,几乎每个android都支持这个功能,你可以将鼠标和键盘连接到它)。

关键字: USB 鼠标 Android 树莓派

在C语言编程中,字符串处理是基础操作,但传统库函数如strcat()因缺乏内存边界检查而成为安全漏洞的温床。根据MITRE的CWE数据库统计,缓冲区溢出漏洞中有超过30%源于不安全的字符串操作。本文将设计一个安全增强的字...

关键字: 字符串 strcat C语言

C语言因其高效性和底层控制能力被广泛应用于系统编程,但其缺乏内置的边界检查和类型安全机制,使得输入验证成为保障程序安全的核心环节。从格式化字符串漏洞到整数溢出攻击,未经严格验证的输入可能导致缓冲区溢出、权限提升甚至远程代...

关键字: C语言 字符串

Google 宣布与中国 AR 科技公司 XREAL 达成深度战略合作,联合推出全球首款专为 Android XR 平台打造的旗舰级 AR 眼镜 Project Aura。

关键字: Google XREAL Android XR眼镜 AR

继停止维护AOSP开源项目后,谷歌母公司Alphabet近日被曝在其安卓系统(Android)、Pixel手机以及Chrome浏览器等部门裁员数百人。这一举措引发了业界的广泛关注,也引发了对谷歌未来业务布局的诸多猜测。

关键字: 谷歌 AOSP Android 裁员

在本教程中,我们将使用Capacitor 6、Angular和TypeScript构建一个Android应用程序,该应用程序通过串行端口连接到BleuIO USB加密狗。该应用程序允许用户直接从Android设备发送和接...

关键字: Android USB 电容器 BLE设备

早前媒体报道谷歌将停止维护Android开源项目(AOSP),将Android开发全面转向内部闭源分支,目前这一消息已经得到谷歌官方确认。

关键字: 谷歌 Android 开源

本项目演示了如何通过OTG (on - go) USB在Android设备上使用BleuIO USB加密狗作为串行端口。使用电容器6和@adeunis/电容器-串行插件,我们建立串行连接,发送AT命令,并实时读取响应。该...

关键字: 电容器 Android 传感器 微控制器 嵌入式系统

在Linux操作系统中,Android Debug Bridge(ADB)是一个功能强大的命令行工具,它允许开发者在计算机和Android设备之间建立通信,从而进行调试、管理、安装应用等操作。本文将详细介绍在Linux系...

关键字: Linux系统 Android Debug ADB
关闭