如果没有足够的空间显示它们,请重叠图像

时间:2014-09-30 17:38:17

标签: android imageview

我正在编写一个小卡片游戏,用户有五张卡片,它们位于屏幕的左侧。让我们说每张卡的宽度设置为100dp。然后我想要将卡片相应地裁剪并放在彼此之下。如果卡片的总高度太大而无法显示它们,我希望它们重叠,而不是让它们变小。

例如,左侧可能是平板电脑,空间足够,右侧是智能手机,我希望卡片重叠。

Example

我有什么想法可以做到这一点吗?

2 个答案:

答案 0 :(得分:0)

您可以计算图像视图的高度,然后裁剪卡片图像:

bm = Bitmap.createBitmap(originalbitmap, 0, 0, fullViewWidth, calculatedViewHeight);
imageview.setImageBitmap(bm);

答案 1 :(得分:0)

我得到了它的工作:

代码

public class HandCardsLayout extends RelativeLayout {

  // constructors etc..

  public void init() {
      Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
      Point size = new Point();
      display.getSize(size);
      int heightLandscape = size.y;
      int viewDistance = heightLandscape / 5;
      for (int i = 0; i < 5; i++) {
          ImageView imageView = getImageViewAt(i);
          if(i < 4) {
              imageView.setPadding(0, 0, 0, -viewDistance);
          }
      }
  }
}

布局文件

<de.memorian.HandCardsLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@android:color/transparent"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerInside"
        android:adjustViewBounds="true"
        android:layout_above="@+id/handCard2"
        android:id="@+id/handCard1"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerInside"
        android:adjustViewBounds="true"
        android:layout_above="@+id/handCard3"
        android:id="@+id/handCard2" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerInside"
        android:adjustViewBounds="true"
        android:layout_above="@+id/handCard4"
        android:id="@+id/handCard3" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerInside"
        android:adjustViewBounds="true"
        android:layout_above="@+id/handCard5"
        android:id="@+id/handCard4" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerInside"
        android:adjustViewBounds="true"
        android:layout_alignParentBottom="true"
        android:id="@+id/handCard5" />
</de.memorian.HandCardsLayout>

此代码段以均匀的距离重叠ImageView。