如何判断何时裁剪图像?

i_a*_*orf 1 android imageview image-clipping android-layout

如果我有一个包含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>
Run Code Online (Sandbox Code Playgroud)

我想象类似的东西,如果没有人被裁剪,它将返回一个索引或0。函数调用的语义并不是很重要……我只需要某种方法就可以知道是否存在裁剪,如果有的话,它是谁?

int whichImageIsClipped(LinearLayout root) { ... }
Run Code Online (Sandbox Code Playgroud)

Noe*_*oel 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();
}
Run Code Online (Sandbox Code Playgroud)