ImageView 位图比例尺寸

2023-12-14

我有一个比我放入的 ImageView 更大的位图。我将 ScaleType 设置为 center_inside。如何获得缩小图像的尺寸?


好的。我可能应该更清楚。在将缩放位图绘制到屏幕上之前,我需要缩放位图的高度和宽度,以便我可以在正确的位置绘制一些叠加层。我知道原始位图中叠加层的位置,但不知道缩放后的位置。我想出了一些简单的公式来计算它们应该在缩放位图上的位置。

我会解释一下我做了什么,以防有一天其他人可能需要这个。

我得到了位图的原始宽度和高度。 ImageView的高度和宽度被硬编码在xml文件中的335处。

int bitmap_width = bmp.getWidth();
int bitmap_height = bmp.getHeight();

我确定了哪一个更大,这样我就可以正确地找出计算的基础。对于我当前的示例,宽度较大。由于宽度缩小到 ImageView 的宽度,我必须找到缩小后的高度。我只是将 ImageView 的宽度与位图的宽度之比乘以位图的高度。除法最后进行,因为先进行整数除法会得到 0 的结果。

int scaled_height = image_view_width * bitmap_height / bitmap_width;

通过缩放后的高度,我可以使用以下方法确定缩放后的位图两侧的空白空间量:

int blank_space_buffer = (image_view_height - scaled_height) / 2;

为了确定缩放位图上叠加层的 x 和 y 坐标,我必须使用原始坐标和这些计算出的数字。本例中的 x 坐标很简单。由于缩放后的宽度是 ImageView 的宽度,因此我只需将 ImageView 的宽度与 Bitmap 的宽度之比乘以原始 x 坐标即可。

int new_x_coord = image_view_width * start_x / bitmap_width;

y 坐标有点棘手。取位图缩放后的高度与位图原始高度的比率。将该值与原始 y 坐标相乘。然后添加空白区域缓冲区。

int new_y_coord = scaled_height * start_y / bitmap_height + blank_space_buffer;

这适合我的需要。如果高度大于宽度,只需反转宽度和高度变量即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ImageView 位图比例尺寸 的相关文章

  • 使用 google Directions API 的地图视图绘制方向 - 解码折线

    我正在尝试使用 Google 方向 API 在我的地图视图上显示方向 但我在从 JSON 响应获取数据时遇到困难 我可以获得 级别 和 点 字符串 但无法弄清楚如何将它们解码为地图上的点 任何帮助将非常感激 我有一个类可以为您解码它们 添加
  • 如何强制 Eclipse 将 xml 布局和样式显示为文本?

    我最近升级到带有 ADT 20 0 3 的 Eclipse 4 2 Juno 如果我查看旧项目中的布局或样式 Eclipse 只会向我显示其适当的基于控件的编辑器 我想编辑语法突出显示的 xml 文本 我没有找到将插件的编辑器切换到此模式的
  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • Manifest Merger工具:替换失败

    我正在使用一个使用自己的 android theme 的库 因此在构建时收到以下错误 错误 55 9 任务 contacit processDebugManifest 执行失败 清单合并失败 AndroidManifest xml 中的属性
  • 带有一、二和三个按钮的 Android 警报对话框

    我不经常发出警报 但每次发出警报时 我都会花一些时间来阅读文档 https developer android com guide topics ui dialogs html并弄清楚如何去做 由于我现在不得不这样做几次 所以我将在下面写一
  • Android 如何更改 OnTouchListener 上的按钮背景

    你好 我在 xml 中有一个按钮 我正在使用OnTouchListener在我的活动中获得button按下并释放 但问题是 当我按下按钮时背景颜色没有改变 当我延长可能的活动时OnClickListener背景正在改变 任何人都可以告诉我的
  • 播放 SoundCloud 曲目

    我可以在 Android 应用程序中播放 SoundCloud 中的曲目吗 我正在尝试这段代码 但它不起作用 String res https api soundcloud com tracks 84973999 stream client
  • 如何在android线性布局上获得阴影? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在android中为View设置阴影 https stackoverflow com questions 4406524 how to set shadow to a view in androi
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 如何为发布而不是调试创建密钥库?扑

    我按照使用此网站部署 flutter 的步骤进行操作https flutter io android release https flutter io android release 当我运行 flutter build apk 时出现此错
  • 放置在 NavigationDrawer 顶部的片段

    我正在尝试添加一个PreferenceFragment在我的应用程序中 问题是 它自动放置在我的顶部NavigationDrawer public class SetPreferenceActivity extends Activity O
  • 在旋转时从错误的资源文件夹中提取可绘制对象

    在这里拉我的头发 因此 我正在使用一个具有多种类型的可绘制对象的应用程序 并且它们的结构如下 res Portrait resources drawable mdpi drawable hdpi drawable xhdpi Landsca
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • 模块中的类无法加载

    我正在开发一个 2D Unity android 游戏 其中我最近添加了 Firebase Beta SDK 但添加后FirebaseAnalytics unitypackage我面临的错误是 无法加载模块中的类 当我删除文件夹时Fireb
  • 错误:无法创建新会话,因为找不到需要 HttpClient、InputStream 和 long 的“createSession”

    我正在尝试自动化 Android 混合应用程序 但出现以下错误 1 线程 main org openqa selenium WebDriverException中出现异常 无法创建新会话 因为未找到需要 HttpClient InputSt
  • Android 中循环事件的星期几和时间选择器

    我想创建一个控件 允许用户在我的 Android 活动中选择一周中的某一天 星期一 和一天中的某个时间 下午 1 00 找不到任何关于此的好帖子 好吧 我想我已经明白了 我只是不喜欢这个解决方案 因为我在一周中的某一天使用的微调器与时间选择
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 如何在基本活动中使用 ViewBinding 的抽象?

    我正在创建一个基类 以便子级的所有绑定都将设置在基类中 我已经做到了这一点 abstract class BaseActivity2 b AppCompatActivity private var viewBinding B null pr
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro
  • Android应用程序可以像旧的普通java小程序一样嵌入到网页中吗?

    我对 android 平台一无所知 也无法在互联网上找到这个基本问题的答案 更新 好的 我本身无法嵌入 Android 应用程序 但是我可以在 Android Webbrowser 中嵌入 Java 的东西吗 不可以 您无法将 Androi

随机推荐

  • TDD:为什么让应用程序代码知道它正在测试而不是运行可能是错误的?

    In 这个线程 布莱恩 唯一的回答者 说 你的代码应该以与测试无关的方式编写 单个评论说 你的代码绝对不应该在全局 我正在测试标志 上分支 但都没有给出理由 我会really喜欢听一些关于此事的理性想法 进入给定的应用程序类并设置一个布尔值
  • CocoaPods 未安装或未处于有效状态

    Launching lib main dart on iPhone 11 Pro Max in debug mode Warning CocoaPods is installed but broken Skipping pod instal
  • 后台任务中的 Toast 通知响应

    我正在编写一个可以在后台任务中显示 toast 通知的应用程序 我使用BackgroundTaskBuilder 在通知中 我使用两个按钮 它们应该执行两个不同的功能 但我无法获得通知的响应 我在互联网上读到我应该为此启动另一个后台任务 但
  • 如何在服务中使用 kernel.terminate 事件

    我做了一个运行繁重任务的服务 该服务在控制器中调用 为了避免页面加载时间过长 我想返回 HTTP 响应并在之后运行繁重的任务 我读过我们可以使用 kernel terminate 事件来做到这一点 但我不明白如何使用它 目前我尝试在 Ker
  • @Autowired 不适用于球衣和弹簧

    当我当时运行测试时 Autowired 正在工作 但是当我运行 Web 应用程序并尝试当时获取数据时 它会抛出空指针异常 这是我的控制器 在此 BuyerRepo 中始终为 null import com retail exception
  • 在 Ruby on Rails 3 中使用 Twitter Bootstrap 图标作为链接的最佳方式?

    在 Rails 3 中使用 Twitter Bootstrap 提供的图标作为链接的最佳方式是什么 目前 我像粘贴的代码片段一样使用它 但当我使用平板电脑查看网页时 该图标不显示 我确信有更好的方法来使用 Twitter Bootstrap
  • 如何将 env 文件与 GitHub Actions 结合使用?

    我有多个环境 dev qa prod 并且我正在使用 env 文件来存储机密等 现在我要切换到 GitHub Actions 我想使用我的 env 文件并将它们声明到envgithub actions yml 的部分 但从我到目前为止所看到
  • 如何确定编解码器/容器组合是否与 FFmpeg 兼容?

    我正在考虑重新混合一些保存音频和视频的容器 以便提取最好的第一个音频流 并将其存储在一个新的容器中 例如only音频流存在 FFmpeg 的输出上下文是这样创建的 AVFormatContext output context NULL av
  • 如何将 var 添加到文本 javascript

    我有这个代码 ajax url http localhost record FlashWavRecorder master jjj r type HEAD error function sd html img src 5 0 gif suc
  • Keras 序列模型中使用哪种损失函数

    我使用的是 Keras 序列模型 预测输出的形状为 1 5 5 个特征 我有一个准确度指标定义如下 对于 N 个预测 模型的准确性将是预测样本的百分比 使得 对于每个预测及其各自的真实标签 所有特征的差异不超过 10 例如 如果y i 1
  • 从嵌套字典中删除字段的优雅方法

    我必须从字典中删除一些字段 这些字段的键在列表中 所以我写了这个函数 def delete keys from dict dict del lst keys Delete the keys present in lst keys from
  • SonarQube - 如何查看前 15 条以上的违规行为?

    我正在使用 SonarQube 5 3 我们的代码库中有 241k 个问题 但是 当我过滤掉 主要 问题并单击 规则 框查看违反了哪些规则时 我只能看到前 15 个 有没有办法可以找出所有这些问题 我已经编辑了这个问题以添加屏幕截图 请注意
  • 替换字符串中第 N 个位置的字符

    我想替换字符串中第 N 个位置的字符 这是我的查询 SELECT code FROM tablecodes 结果是 3 行 AXGETYTRTFYZUFYZFFFDIZEG GFYZUFYZFAXFCDIZAX ZUFYZGEFYFAXFF
  • 在 CakePHP 中添加好友功能

    我需要在我的应用程序中添加一个简单的朋友功能 通过一些研究 我需要一个链接回用户表的连接表 像这样的 我已经有一个用户表 用户 友谊 用户 谁能提供更多详细信息吗 友谊表应包含以下列 id Integer user from the use
  • AngularFire Loop 非规范化数据

    我有类别和子类别 数据的结构就像blog shows categories JF1RmYehtF3IoGN9xHG categoryId title Example subcategories JF1RmYehtF3IoGN239GJ su
  • Python 3 中如何区分实例方法、类方法、静态方法或函数?

    我想区分Python 3中的方法和函数 此外 如果是方法 我想获取相应的类 我目前的解决方案是这样的 import types import inspect def function or method f if inspect ismet
  • java.lang.NullPointerException:在可扩展列表视图中显示数据库中的记录

    正如问题所示 我需要显示数据库中的记录 每个孩子的记录不同 即 子1 记录1个数据 child 2 记录2数据 so等等 我想出了以下显示代码 package com example moolah import android app Li
  • knockoutjs 依赖选择框绑定子选择框的问题

    与knockout js购物车示例类似 我有一个包裹列表 价格取决于位置 我无法将依赖选择框 位置选项 与视图绑定
  • 为什么Spark的重新分区没有将数据平衡到分区中?

    gt gt gt rdd sc parallelize range 10 2 gt gt gt rdd glom collect 0 1 2 3 4 5 6 7 8 9 gt gt gt rdd repartition 3 glom col
  • ImageView 位图比例尺寸

    我有一个比我放入的 ImageView 更大的位图 我将 ScaleType 设置为 center inside 如何获得缩小图像的尺寸 好的 我可能应该更清楚 在将缩放位图绘制到屏幕上之前 我需要缩放位图的高度和宽度 以便我可以在正确的位