文章摘要

  本文将介绍如何在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阅读器之文本、图片和表格测量的更多相关文章

  1. C# 读取Word文本框中的文本、图片和表格(附VB.NET代码)

    [概述] Word中可插入文本框,在文本框中可添加文本.图片.表格等内容.本篇文章通过C#程序代码介绍如何来读取文本框中的文本.图片和表格等内容.附VB.NET代码,有需要可作参考. [程序环境] 程 ...

  2. C# 替换Word文本—— 用文档、图片、表格替换文本

    编辑文档时,对一些需要修改的字符或段落可以通过查找替换的方式,快速地更改.在C# 在word中查找及替换文本一文中,主要介绍了在Word中以文本替换文本的方法,在本篇文章中,将介绍如何用一篇Word文 ...

  3. Java 操作Word书签(二):添加文本、图片、表格到书签内容

    在Java操作Word书签(一)中介绍了给Word中的特定段落或文字添加书签.读取及删除已有书签的方法,本文将继续介绍Java 操作Word书签的方法,即如何给已有的书签添加内容,包括添加文本.图片. ...

  4. Java 操作Word书签(三):用文本、图片、表格替换书签

    本篇文章将继续介绍通过Java来操作Word书签的方法,即替换Word中已有书签,包括用新的文本.图片.表格等替换原有书签处的内容. 使用工具:Free Spire.Doc for Java (免费版 ...

  5. Java 读取Word文本框中的文本/图片/表格

    Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...

  6. C# 操作Word文本框——插入表格/读取表格/删除表格

    在文本框中,我们可以操作很多元素,如文本.图片.表格等,在本篇文章中将着重介绍如何插入表格到文本框,插入的表格我们可以对表格进行格式化操作来丰富表格内容.此外,对于文本框中的表格内容,我们也可以根据需 ...

  7. Android开发:文本控件详解——TextView(一)基本属性

    一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...

  8. Android之拨号界面图片风格,无信息默认显示界面修改

    Android之拨号界面图片风格,无信息默认显示界面修改 点开Dialer app,出现拨号,联系人,收藏三个选项卡,也就是三个Fragment,在三个界面都没有信息的时候会显示一个时钟,联系人,收藏 ...

  9. Android 加载大图片到内存

    本文演示android中图片加载到内存 首先设计界面: 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/ap ...

  10. C#操作word模板插入文字、图片及表格详细步骤

    c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...

随机推荐

  1. java与es8实战之四:SpringBoot应用中操作es8(无安全检查)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<java与es8实战>系 ...

  2. 《SQL与数据库基础》03. SQL-DML

    目录 DML 数据插入 数据删除 数据更新 本文以 MySQL 为例 DML 数据插入 给指定字段添加数据: INSERT INTO 表(字段1, 字段2, ......, 字段n) VALUES(值 ...

  3. 解决 wg-quick 在 Mac 上 bash 3 无法运行的问题

    问题原因 我可以理解,开发人员不想使用苹果使用的旧bash v3.但从用户的帖子来看,安装一个较新的bash并不那么好 所以我看了wireguard的wg-quick.需要支持的唯一变化,两个bash ...

  4. TCP协议的秘密武器:流量控制与拥塞控制

    TCP可靠性传输 相信大家都熟知TCP协议作为一种可靠传输协议,但它是如何确保传输的可靠性呢? 要实现可靠性传输,需要考虑许多因素,比如数据的损坏.丢失.重复以及分片顺序混乱等问题.如果不能解决这些问 ...

  5. POWERBI_1分钟学会_连续上升或下降指标监控

    一:数据源 模拟数据为三款奶茶销量的日销售数据源,日期是23.8.24-23.8.31.A产品为连续7天,日环比下降,B产品为连续3天,日环比下降,C产品为连续2天,日环比下降. 二:建立基础度量值 ...

  6. oracle:ORA-14765建索引阻塞创建分区及处理步骤

    在生产库建立一个索引,报ORA-14765创建索引时不能创建分区,也就是索引的创建阻塞分区的建立. 处理步骤: 1.与开发人员沟通昨天下午在Tbl_Waste表上建索引,一直未返回成功,定位问题SQL ...

  7. MySQL到TiDB:Hive Metastore横向扩展之路

    作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方 ...

  8. tiptopGP5.2链接所有表或报不存在函数处理

    修改交易的表时需要特别注意,改完要关联所有有关的表r.rb.rb pja_file 当链接提示不存在的函数调用,又无法确定具体是那个关联程序时, 可以在本函数内先定义这个报错的函数,重新链接时,系统会 ...

  9. Java虚拟机(JVM):第二幕:自动内存管理 - Java内存区域与内存溢出异常

    前言:Java与C++之间有一堵高墙,主要是有内存动态分配和垃圾收集技术组成的.墙外的人想要进来,墙内的人想要出去. 一.运行时数据区域 JVM在执行Java程序时,会将其管理的内存划分为若干个不同的 ...

  10. Mac OS安装Python的pip

    最近牛牛的同学在学习python,但当他使用numpy时出现了报错(。•́︿•̀。) 原因为他的python没有numpy这个库(这个故事很典).然鹅雪上加霜的是,他的电脑是Mac,没有Windows ...