我非常喜欢Google Keep中的图片拼贴视图。
我尝试以下库
https://github.com/lopei/collageview
CollageView collageView = (CollageView) findViewById(R.id.collageView);
collageView
.photoMargin(1)
.photoPadding(3)
.backgroundColor(Color.RED)
.photoFrameColor(Color.BLUE)
.useFirstAsHeader(false)
.defaultPhotosForLine(3)
.useCards(true)
.loadPhotos(new int[] {R.drawable.one, R.drawable.three, R.drawable.two, R.drawable.zero});
我能做到的最好的是
如果你仔细注意。有一个显着的不同。在Google Keep中,它能够更智能地缩放图像,因此无法进行图像裁剪。可以从缩略图中查看所有图像信息。没有信息丢失。
我在想,你有什么想法,我怎样才能达到与Google Keep相同的效果?
答案 0 :(得分:0)
我已阅读collageview
的代码并试用了。
我认为解决方案的关键是在layout_weight
上应用正确的ImageView
。
采取以下示例
Image0 = 1280 x 720
Image1 = 685 x 963
Image2 = 1280 x 856
layout_weight for image 0 = 1 (since its height is the lowest)
layout_weight for image 1 = height0/height1 * width1/width0
= 720/963 * 685/1280 = 0.4001168224
layout_weight for image 2 = height0/height2 * width2/width0
= 720/856 * 1280/1280 = 0.8411214953
所以,使用以下XML
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="0dp"
android:width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:src="@drawable/three"
android:adjustViewBounds="true" />
<ImageView
android:layout_width="0dp"
android:width="0dp"
android:layout_weight="0.4001168224"
android:layout_height="wrap_content"
android:src="@drawable/two"
android:adjustViewBounds="true"/>
<ImageView
android:layout_width="0dp"
android:width="0dp"
android:layout_weight="0.8411214953"
android:layout_height="wrap_content"
android:src="@drawable/one"
android:adjustViewBounds="true"/>
</LinearLayout>
看起来像这样