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 ...
随机推荐
- 线程方法接收参数和返回参数,Java的两种线程实现方式对比
The difference beteen two way 总所周知,Java实现多线程有两种方式,分别是继承Thread类和实现Runable接口,那么它们的区别是什么? 继承 Thread 类: ...
- 如何通过关键词搜索API接口获取1688的商品详情
如果你是一位电商运营者或者是想要进行1688平台产品调研的人员,你可能需要借助API接口来获取你所需要的信息.在这篇文章中,我们将会讨论如何通过关键词搜索API接口获取1688的商品详情. 第一步:获 ...
- 如何通过API接口获取淘宝的店铺所有商品详情
在电子商务领域中,淘宝是亚洲最大的在线交易平台之一,拥有海量的商品资源和消费者.如果你是一名开发者,想要在自己的网站或者APP中嵌入淘宝商品资源,那么你就需要通过淘宝开放平台提供的API接口来获取这些 ...
- 推荐一个react上拉加载更多插件:react-infinite-scroller
在开发网页和移动应用时,经常需要处理大量数据的展示和加载.如果数据量非常大,一次性全部加载可能会导致页面卡顿或崩溃.为了解决这个问题,我们可以使用无限滚动(Infinite Scroll)的技术.Re ...
- Dubbo3应用开发—XML形式的Dubbo应用开发和SpringBoot整合Dubbo开发
Dubbo3程序的初步开发 Dubbo3升级的核心内容 易⽤性 开箱即⽤,易⽤性⾼,如 Java 版本的⾯向接⼝代理特性能实现本地透明调⽤功能丰富,基于原⽣库或轻量扩展即可实现绝⼤多数的 微服务治理能 ...
- Prometheus + Grafana 搭建监控系统
前言 本文主要记录下如何使用 Prometheus + Grafana 搭建对各种服务的性能监控,涵盖对 Prometheus.Grafana 的基本介绍,以及如何使用二者进行对 Linux.MySQ ...
- SpringCloud搭建保姆级教程
一.搭建服务注册与发现中⼼ 使⽤Spring Cloud Netflix 中的 Eureka 搭建服务注册与发现中⼼ 1.创建SpringBoot应用添加依赖 1.spring web 2.eurek ...
- JNI编程之java层和native层的数组数据的交互
一.前言 JNI中的数组类型分为基本类型数组和引用类型数组,他们的处理方式是不一样的.基本类型数组中的元素都是jni基本数据类型,可以直接访问:但是引用类型的数组中的元素是一个类的实例,不能直接访问, ...
- NOI Linux 食用指北
写这篇 blog 的原因是某个小朋友要考 CSP 了还不会用 linux,怎么回事呢. 单击图片即可放大. 前置- linux 虚拟机的安装 在官网 / 其他地方下载 VMware. 在 noi 官网 ...
- PostgreSQL 序列(Sequence)
基本操作 --新增序列 CREATE SEQUENCE xxx_id_seq INCREMENT 1 -- 一次加多少 MINVALUE 1 -- 最小值 START 1 --从多少开始 CACHE ...