android - 如何判断图像何时被剪裁?

标签 android android-layout imageview image-clipping

如果我有一个包含 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/

相关文章:

java - 在 Android 的 Couchbase lite 中获取嵌套的 JSON

android - 转换到 Button 是多余的 - 为什么?

android - java.lang.OutOfMemory错误: bitmap size exceeds VM budget - Android

ios - 当 View 从纵向更改为横向时,调整带有透明孔的层的位置

android - 带有 RecyclerView 的 LinearLayout 在 CardView 外滚动时隐藏 ImageView

android - Google Maps Android API 性能极差

android - 根据屏幕设备大小调整图像按钮大小

java - 从 SDK 21 迁移到 SDK 28

android - 如何在两列上创建带有正方形项目的 GridView?

android - 无法使用 Glide 刷新验证码图像