如何判断图像被剪裁?

时间:2011-06-10 22:59:03

标签: android android-layout imageview image-clipping

如果我有一个包含ImageViews的LinearLayout,我怎么能编写代码来判断哪些内容被屏幕边缘剪掉?

<LinearLayout android:id="@+id/imagecontainer"
              android:orientation="horizontal"
              android:layoutHeight="wrap_content"
              android:layoutWidth="fill_parent">

    <ImageView android:id="@+id/image1" .../>
    <ImageView android:id="@+id/image2" .../>

     ...

    <ImageView android:id="@+id/imageN" .../>

</LinearLayout>

我想象的是,如果没有人被剪裁,它将返回索引或0。函数调用的语义并不重要......我只是需要一些方法来判断是否有剪辑,如果有,是谁?

int whichImageIsClipped(LinearLayout root) { ... }

1 个答案:

答案 0 :(得分:5)

这可能是一个延伸,但你可以尝试getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point)你的每个孩子。如果它返回false,则表示它完全不可见。如果返回true,则需要将返回的Rect与图像的预期大小进行比较。

这对你需要的东西有效吗?

以下是代码,以防有人需要:

public static Boolean isViewClipped(View view) {
  Rect rect = new Rect();
  Boolean completelyObscured = !view.getGlobalVisibleRect(rect);
  return completelyObscured || rect.width() < view.getWidth();
}