首页 > 其他分享 >Android阅读器之文本、图片和表格测量

Android阅读器之文本、图片和表格测量

时间:2023-12-08 21:01:12浏览次数:23  
标签:表格 int TableLayout 阅读器 new Android 文本

文章摘要

本文将介绍如何在Android开发中实现文本、图片和表格的测量。我们将使用Android Studio和Java语言,并利用Android SDK中的相关类库。

正文

文本测量

在Android中,可以使用Paint类和getTextBounds()方法来测量文本。首先,需要创建一个Paint对象,然后设置字体、颜色等属性。接下来,调用getTextBounds()方法,传入要测量的文本,该方法将返回一个Rect对象,其中包含文本的宽度和高度。

示例代码:

int fontColor = textView.getTextSize(); //  文本的字体大小
Paint paint = new Paint(fontColor);
paint.setTextSize(fontColor);
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文档中的不规则字体大小,比如有的行的字体有大有小,也有图片,这个时候如何计算高度和宽度,算法会比较复杂。

标签:表格,int,TableLayout,阅读器,new,Android,文本
From: https://blog.51cto.com/u_16423321/8741731

相关文章

  • Android阅读器之文本、图片和表格测量
    文章摘要本文将介绍如何在Android开发中实现文本、图片和表格的测量。我们将使用AndroidStudio和Java语言,并利用AndroidSDK中的相关类库。正文文本测量在Android中,可以使用Paint类和getTextBounds()方法来测量文本。首先,需要创建一个Paint对象,然后设置字体、颜色等......
  • Android Dagger2简单使用
    Dagger是一个很古老的框架了,当初诞生时候,主要是为了模块之间的解耦。本篇文章主要介绍一下如何使用dagger2,后续会介绍其原理。AS集成对于现在的AS项目,一般都是会集成Kotlin和Java混写,所以可以在想要使用dagger的模块module的gradle下加入如下配置。implementation'com.google.dagg......
  • android adb查看分区 adb查看手机分区大小
    androidadb查看分区adb查看手机分区大小_棉花糖的技术博客_51CTO博客https://blog.51cto.com/u_12218/8714703 System分区:就是我们刷ROM的分区Data分区:分区就是我们装APK的分区Cache分区:是缓存分区SDCard分区:就是挂载的SD卡概念:概念描述根目录......
  • 转载:ReportLab生成带表格和图文的PDF
    转载来自于:https://zhuanlan.zhihu.com/p/456486769龙在天涯 项目环境:环境:AnacondaPython3.10编辑器:PyCharm2021.2.3Packages:Reportlab3.6.2ReportLab简介“ThisisasoftwarelibrarythatletsyoudirectlycreatedocumentsinAdobe'sPortableDocumentForma......
  • mumu模拟器frida-server-14.2.18-android执行报错{"type":"error","description":&
    前言全局说明环境:物理机Windos11mumu模拟器下载:MuMuInstaller_3.1.5.0_nochannel-mumu12_zh-Hans_1687258372mumu模拟器:MuMuNG-setup-V3.6.4.2333-1110175123.exemumu模拟器官网:https://mumu.163.commumu模拟器官网-历史版本:https://mumu.163.com/update/一、问题c......
  • element plus el-table表格合并
    el-table表格合并实现都是使用表格的span-method属性绑定操作函数<el-table:data="table.data":span-method="objectSpanMethod"></el-table>操作函数格式constobjectSpanMethod=({row,column,rowIndex,columnIndex})=>{}相同值行合并对于相同的值进行行......
  • python如何提取excel表格中的超链接
    importxlrddefget_wb(path):wb=xlrd.open_workbook(path)returnwbdefget_wb(path):wb=xlrd.open_workbook(path)returnwbdefget_hyperlink(wb,sheet_name,cell):worksheet=wb.sheet_by_name(sheet_name)hyperlink=worksheet.......
  • # yyds干货盘点 # 盘点一个Pandas处理Excel表格实战问题(上篇)
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Pandas实战的问题,一起来看看吧。问题描述:大佬们~ 请问下这个数据怎么实现呢?有2组数据:第一个数据《获取的数据.xlsx》:每13行数据为一组,要实现一列数据拆分成多列数据(这边简称表1),见截图第二个数......
  • 盘点一个Pandas处理Excel表格实战问题(上篇)
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Pandas实战的问题,一起来看看吧。问题描述:大佬们~ 请问下这个数据怎么实现呢?有2组数据:第一个数据《获取的数据.xlsx》:每13行数据为一组,要实现一列数据拆分成多列数据(这边简称表1),见截图第二......
  • Java 读取EXCEL表格中的数据,将数据转为SQL语句
    **[参考文档](https://blog.csdn.net/wl_Honest/article/details/83985751?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-0-83985751-blog-81103171.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.1&utm_relevant_index=3)......