Android阅读器之文本、图片和表格测量
文章摘要
本文将介绍如何在Android开发中实现文本、图片和表格的测量。我们将使用Android Studio和Java语言,并利用Android SDK中的相关类库。
正文
文本测量
在Android中,可以使用Paint类和getTextBounds()方法来测量文本。首先,需要创建一个Paint对象,然后设置字体、颜色等属性。接下来,调用getTextBounds()方法,传入要测量的文本,该方法将返回一个Rect对象,其中包含文本的宽度和高度。
示例代码:
int fontSize = textView.getTextSize(); // 文本的字体大小
Paint paint = new Paint();
paint.setTextSize(fontSize); paint.setColor(Color.BLACK);
String text = textView.getText();
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
int width = bounds.width();
int height = bounds.height();
图片测量
在Android中,可以使用Bitmap类的getWidth()和getHeight()方法来测量图片的尺寸。首先,需要将图片加载到Bitmap对象中,然后调用上述方法来获取图片的宽度和高度。这里需要区分图片是本地图片地址连接还是byte[]数组,然后调用不同的Bitmapfactory方法来实现。
如果是本地文件
Bitmap bitmap = BitmapFactory.decodeFile("path/to/image.jpg");
int width = bitmap.getWidth();
int height = bitmap.getHeight();
如果是byte[]数组,则调用
byte[] data = ...;
Bitmap bitmap = BitmapFactory.decodeByteArray(data,0,data.length);
如果需要用Drawable转换,
Drawable drawable = new BitmapDrawable(getResources(),bitmap);
drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
表格测量
在Android中,可以使用TableLayout或GridLayout来创建表格。这些布局类提供了行和列的属性,可以方便地控制表格的尺寸。首先,需要在布局文件中添加TableLayout或GridLayout,然后添加子视图(如TextView)来表示表格的单元格。
规则表格
示例代码:
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow>
<TextView
android:text="Header 1"
android:layout_column="0" />
<TextView
android:text="Header 2"
android:layout_column="1" />
</TableRow>
<TableRow>
<TextView
android:text="Row 1, Col 1"
android:layout_column="0" />
<TextView
android:text="Row 1, Col 2"
android:layout_column="1" />
</TableRow>
</TableLayout>
不规则表格
如果表格的列和行不固定,则需要在java中以代码的形式呈现,示例代码如下:
TableLayout tableLayout = new TableLayout(context);
TableLayout.LayoutParams layoutParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT);
tableLayout.setLayoutParams(layoutParams);
tableLayout.setStretchAllColumns(true);
for(某种TableRow row:rows){
TableRow newRow = new TableRow(context);
newRow.setLayoutParams(params);
newRow.setGravity(Gravity.CENTER_VERTICAL);
newRow.setBackgroundResource(R.drawable.table_border);
List<某种TableCell> cells = row.getTableCells();
//然后从cells中循环获取对应的表格的文本的相关信息,并放入newRow中
//然后tableLayout.addView(newRow)
}
在将tableLayout添加到相关的界面视图中
view.addView(tableLayout);
分析文章
在Android中,可以使用SpannableStringBuilder和ForegroundColorSpan来高亮显示文章中的关键词。首先,需要将文章加载到TextView中,然后使用SpannableStringBuilder来创建一个可编辑的字符串。接下来,使用ForegroundColorSpan来设置关键词的颜色,并将其应用到SpannableString中。最后,将SpannableString设置回TextView。
示例代码:
String text = "这是一篇关于Android开发的文章。"; String keyword = "Android"; SpannableStringBuilder spannableString = new SpannableStringBuilder(text); ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.RED); int startIndex = text.indexOf(keyword); int endIndex = startIndex + keyword.length(); spannableString.setSpan(foregroundColorSpan, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); TextView textView = findViewById(R.id.textView); textView.setText(spannableString);
总结
本文介绍了在Android开发中实现文本、图片和表格测量的方法,并提供了示例代码。同时,还介绍了如何使用SpannableStringBuilder和ForegroundColorSpan来高亮显示文章中的关键词。当然也可以实现文本,图片等的拼接。另外在实际开发过程,还需要考虑翻页的时候计算对应的宽度和高度,缩进,放大缩小等,特别是针对word文档中的不规则字体大小,比如有的行的字体有大有小,也有图片,这个时候如何计算高度和宽度,算法会比较复杂。
Android阅读器之文本、图片和表格测量的更多相关文章
- C# 读取Word文本框中的文本、图片和表格(附VB.NET代码)
[概述] Word中可插入文本框,在文本框中可添加文本.图片.表格等内容.本篇文章通过C#程序代码介绍如何来读取文本框中的文本.图片和表格等内容.附VB.NET代码,有需要可作参考. [程序环境] 程 ...
- C# 替换Word文本—— 用文档、图片、表格替换文本
编辑文档时,对一些需要修改的字符或段落可以通过查找替换的方式,快速地更改.在C# 在word中查找及替换文本一文中,主要介绍了在Word中以文本替换文本的方法,在本篇文章中,将介绍如何用一篇Word文 ...
- Java 操作Word书签(二):添加文本、图片、表格到书签内容
在Java操作Word书签(一)中介绍了给Word中的特定段落或文字添加书签.读取及删除已有书签的方法,本文将继续介绍Java 操作Word书签的方法,即如何给已有的书签添加内容,包括添加文本.图片. ...
- Java 操作Word书签(三):用文本、图片、表格替换书签
本篇文章将继续介绍通过Java来操作Word书签的方法,即替换Word中已有书签,包括用新的文本.图片.表格等替换原有书签处的内容. 使用工具:Free Spire.Doc for Java (免费版 ...
- Java 读取Word文本框中的文本/图片/表格
Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...
- C# 操作Word文本框——插入表格/读取表格/删除表格
在文本框中,我们可以操作很多元素,如文本.图片.表格等,在本篇文章中将着重介绍如何插入表格到文本框,插入的表格我们可以对表格进行格式化操作来丰富表格内容.此外,对于文本框中的表格内容,我们也可以根据需 ...
- Android开发:文本控件详解——TextView(一)基本属性
一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...
- Android之拨号界面图片风格,无信息默认显示界面修改
Android之拨号界面图片风格,无信息默认显示界面修改 点开Dialer app,出现拨号,联系人,收藏三个选项卡,也就是三个Fragment,在三个界面都没有信息的时候会显示一个时钟,联系人,收藏 ...
- Android 加载大图片到内存
本文演示android中图片加载到内存 首先设计界面: 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/ap ...
- C#操作word模板插入文字、图片及表格详细步骤
c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...
随机推荐
- 使用Skonsole自动生成Git提交信息
使用Skonsole自动生成Git提交信息 随着LLM应用的普及,日常工作中的很多使用都可以使用LLM来完成,比如Git提交信息的生成. Skonsole是一个基于Semantic Kernel的命令 ...
- Hugging News #0904:🤗 登陆 AWS Marketplace
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...
- js获取当前月的天数
//取得本月天数(实际代码:) var now=new Date(); var d = new Date(now.getFullYear(),now.getMonth()+1,0); var days ...
- 2.10 PE结构:重建重定位表结构
Relocation(重定位)是一种将程序中的一些地址修正为运行时可用的实际地址的机制.在程序编译过程中,由于程序中使用了各种全局变量和函数,这些变量和函数的地址还没有确定,因此它们的地址只能暂时使用 ...
- 在线问诊 Python、FastAPI、Neo4j — 创建 疾病节点
目录 疾病数据 创建节点 根据检查结果.医生的临床经验得出疾病 疾病数据 disease_data.csv 建议值用""引起来.避免中间有,号造成误识别 疾病 "干眼&q ...
- 「luogu - P3911」最小公倍数之和
link. Denote \(cnt_{x}\) = the number of occurrences of \(x\), \(h\) = the maximum of \(a_i\), there ...
- 已发布:Oracle Database 23c 免费版 — 开发人员版!
注:甲骨文云技术公众号文章备份 2023/04/12. 翻译新闻稿. 1.新发布 Oracle Database 23c 免费版 - 开发人员版 在 Oracle CloudWorld 2022 上, ...
- ModelScope
欢迎来到ModelScope平台!本篇文章介绍如何快速开始使用ModelScope平台上的模型,包括所需的基础概念,环境安装,模型推理和训练的快速实践示例. 如何开始# 如果你是新手,想快速体验产品, ...
- win10系统单独编译和使用WebRTC的回声消除(AEC)、音频增益(AGC)、去噪(NS)模块
一.简介 本人想单独编译并使用WebRTC的音频回声消除模块,奈何技术有限,于是在百度的海洋里大海捞针,发现了https://www.cnblogs.com/mod109/p/5827918.html ...
- 代码的艺术-Writing Code Like a Pianist
前言 如何评定一个系统的质量?什么样的系统或者软件可以称之为高质量?可以从三个角度来看,一是架构设计,例如技术选型.分布式系统中的数据一致性考虑等,二是项目管理,无论是敏捷开发还是瀑布式开发,都应当对 ...