Android对字符串的处理

 需求:实现长文字的滚动停留,所以需要将长字符串截取成指定TextView长度的字符串数组 ,然后使用ViewFilpper实现。

分割代码如下:

/*
 * 根据要求分割字符串
 */
public static String[] getLineStrs(String content, Paint paint, float width, float textSize) {
    paint.setTextSize(textSize);//Note1:测量的工具首先需要定义单位 

    int index = 0;
    int start = 0;
    int end = 0; 

    float textLength = paint.measureText(content); 

    int lineNum = (int) Math.ceil(1.5*textLength / width) ;//Note2:计算行数因为判断的不准确,所以增加余量1.5倍,最后处理
    String[] mSplitTextParts = new String[lineNum]; 

    for (int i = 0; i <= content.length(); i++) {
        end = i; 

        float measureLength = paint.measureText(content, start, end);//Note3:[start,end)范围的字符串 

        if (measureLength >= width) {
                mSplitTextParts[index] = content.substring(start, end);//Note4:[start,end)范围的字符串
                start = end;
                index++;
        } 

        if (end == content.length()) {
            mSplitTextParts[index] = content.substring(start, end);
            return Arrays.copyOf(mSplitTextParts, index);//Note5:因为行数判断的不准确,所以需要清除掉未赋值的null值字符串
        }
}
    return null; 

猜测分割不准的原因是:中英文混杂。可能是半角全角的问题。
测试后发现:
1, 全英文状态下,半角全角计算的标准行数(未经过1.5倍的余量修正)都ok。
2, 全中文状态下,半角全角计算的标准行数(未经过1.5倍的余量修正)都ok。
3, 在中英文混杂状态下,计算的标准行数比实际截取的行数要大。在这里存疑。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串
, index
, start
, content
, Android 字符串处理
, 全角
半角
,以便于您获取更多的相关知识。

时间: 2025-01-05 03:29:40

Android对字符串的处理的相关文章

Android判断字符串中是否含字母、中文或数字

Android 中文俗称安卓或安致,是一个以Linux为基础的开放源代码移动操作系统,主要用于智能手机和平板电脑,由Google成立的Open Handset Alliance(OHA,开放手持设备联盟)持续领导与开发中.目前Google发布Android的最新正式版本为Android 6.0"Marshmallow". Android系统最初由安迪·鲁宾(Andy Rubin)等人开发制作,最初开发这个系统的目的是创建一个数码相机的先进操作系统:但是后来发现市场需求不够大,加上智能手

Android TextView 字符串展示不同大小文字

  用Spannable字符串实现:   String s= "Hello Everyone"; SpannableString ss1= new SpannableString(s); ss1.setSpan(new RelativeSizeSpan(2f), 0,5, 0); // set size ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, 0);// set color TextView tv= (TextView

Android 通过字符串来获取R下面资源的ID 值

原文:http://www.oschina.net/code/snippet_163910_6305 获取drawable下的icon的值. 方法一: try{ Field field=R.drawable.class.getField("icon"); int i= field.getInt(new R.drawable()); Log.d("icon",i+""); }catch(Exception e){ Log.e("icon&

Android开发入门(二十)内容提供者 20.3 经过预定义的查询字符串常量

除了使用自己手动写的查询URI,可以也使用Android内置的URI查询常量. 例如,除了使用 content://contacts/people,可以写这个赋值语句. Uri allContacts = ContactsContract.Contacts.CONTENT_URI;   一些Android内置的预定义查询字符串常量. Browser.BOOKMARKS_URI Browser.SEARCHS_URI CallLog.CONTENT_URI MediaSto re.Images.M

TextVie获取显示字符串的宽度之Android开发_Android

此文通过判断textview要显示的字符串的宽度是否超过我设定的宽度,若超过则执行换行,具体代码讲解如下: 项目中的其他地方也有这样的需求,故直接使用了那一块的代码. public float getTextWidth(Context Context, String text, int textSize){ TextPaint paint = new TextPaint(); float scaledDensity = Context.getResource().getDisplayMetric

Android中Split()字符串分割特殊用法案例详解_Android

split()分割字符串 1.不同环境下的区分 Java:分割字符串不能写成split("$")//$为要分割的字符 Android:分割字符串需要加上中括号split("[$]")//$为要分割的字符 2.特殊用法--当split()分割字符串遇上特殊符号 案例分析 String str = "abc|dfg"; String[] all=str.split("|"); system.out.println(all[0]);

Android编程实现从字符串中查找电话号码的方法_Android

本文实例讲述了Android编程实现从字符串中查找电话号码的方法.分享给大家供大家参考,具体如下: /** * 从字符串中查找数字字符串 */ private List<String> getNumbers(String content) { List<String> digitList = new ArrayList<String>(); Pattern p = Pattern.compile("(\\d+)"); Matcher m = p.ma

android应用资源预编译,编译和打包全解析

我们知道,在一个APK文件中,除了有代码文件之外,还有很多资源文件.这些资源文件是通过Android资源打包工具aapt(Android Asset Package Tool)打包到APK文件里面的.在打包之前,大部分文本格式的XML资源文件还会被编译成二进制格式的XML资源文件.在本文中,我们就详细分析XML资源文件的编译和打包过程,为后面深入了解Android系统的资源管理框架打下坚实的基础.         在前面Android资源管理框架(Asset Manager)简要介绍和学习计划一

Android开发指南(41) —— Searchable Configuration

前言 本章内容为 Android开发者指南的 Framework Topics/Search/Searchable Configuration章节,译为"搜索配置文件",版本为Android 4.0 r1,翻译来自:"呆呆大虾",欢迎访问他的微博:"http://weibo.com/popapa",再次感谢"呆呆大虾" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com.   声明 欢迎转载