【问题标题】:Getting bitmap size in pixels on screen, not the actual size?在屏幕上以像素为单位获取位图大小,而不是实际大小?
【发布时间】:2012-07-10 22:18:06
【问题描述】:

我有一个布局,顶部有一些水平滚动,底部有一些文本框,中间有任何空间,我用 ImageView 填充它。在那个 ImageView 中,我加载了一个位图。让我们将此 ImageView 称为底部的

现在,在该 ImageView 之上,我动态加载另一个 ImageView,用户可以通过拖动它来移动它。第二个 ImageView(top one)有一个小图标,将覆盖在我的位图顶部并保存。将其视为徽标/水印。

两个 ImageView 都在一个相对布局中,所以我可以移动顶部布局。

现在我遇到的问题是我无法获得 bottom ImageView 中加载的位图的大小。

我尝试了以下方法:

DisplayMetrics om = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(om);
tv.setText("W:" + b.getScaledWidth(om) + " H:" + b.getScaledHeight(om));

但它不起作用,b.getScaledWidth(om) 返回我的位图的实际宽度,而不是屏幕上的宽度,应该是(以防万一横向图像)480px,我正在测试的手机的屏幕尺寸。

附加信息:为什么我需要这个是因为我在底部 ImageView 中显示的图像与 ImageView 的比例不同。所以我可以得到 ImageView 的大小,但是这个 ImageView 比图像本身大。由于我需要将顶部 ImageView 保持在底部 ImageView 中显示的图像边界内,因此我需要知道底部 ImageView 中图像的大小,而不是底部 View 本身的大小。

任何想法我做错了什么?

【问题讨论】:

    标签: android graphics


    【解决方案1】:

    我没有找到方法,所以我“手动”做了。

    我用我的 MyImageView 类扩展了 ImageView 类,在 onMeasure 覆盖中我计算了比例因子并相应地创建了一个 Rect 根据我的 RelativeLayout 表示坐标中的边界,其中内部是 MyImageView

    我之所以走这条路,是因为我在这里找到了一个帖子,提到了创建自己的 ImageView 类,现在找不到链接了。

    无论如何,在那之后我检查 top ImageView 的顶部/左侧位置,并在 onTouch 方法中移动它时设置最大位置.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2013-06-06
      • 2021-09-22
      • 2012-09-30
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多