如果我有一个包含 ImageView 的 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) { ... }
最佳答案
这可能有些困难,但您可以尝试 getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point)在你的每个 child 身上。如果它返回 false,您就知道它完全不在视野范围内。如果它返回 true,您将需要将返回的 Rect 与图像的预期大小进行比较。
这能满足您的需求吗?
这是代码,以防有人需要:
public static Boolean isViewClipped(View view) {
Rect rect = new Rect();
Boolean completelyObscured = !view.getGlobalVisibleRect(rect);
return completelyObscured || rect.width() < view.getWidth();
}
关于android - 如何判断图像何时被剪裁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312865/