我是Android开发的新手,仍然无法完全理解尺寸如何适应不同的布局。我想将这本书的预览放入这个模板中:
我尝试使用FrameLayout实现它。这个想法是预览图像的中心正好是png背景的中心。这是代码:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".5" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/book_frame" />
<ImageView
android:id="@+id/previewImage"
android:layout_width="83dp"
android:layout_height="83dp"
android:layout_gravity="center_vertical|center_horizontal"
android:src="@drawable/abs__ab_bottom_solid_dark_holo" />
</FrameLayout>
布局构建器的结果看起来与我希望的完全相同:
在真正的手机上它是不同的:
我认为在其他决议中,两种变体也会有所不同。所以我的问题是如何同步这些图像所以在任何调整大小和扭曲之后,预览将正确地适合封面? 可能的解决方案是从图像中删除边框并将其放在previewImage上。但是在应用程序中有几个类似的用例,其中边框无法删除,所以我想找到一个通用的解决方案。
答案 0 :(得分:0)
你的答案中有答案。
在您的案例中发生的事情图片大小对于不同的屏幕分辨率很重要。
硬编码的东西总会给你的情况带来奇怪的结果
android:layout_width="83dp"
android:layout_height="83dp"
这段代码。
选中此link,这将指导您管理不同屏幕的 drawables 。
这是另一个link
答案 1 :(得分:0)
所以对我来说合适的解决方案是将内部图像的边框分离到自己的ImageView中,将其插入到照片上的布局中,并为照片添加1dp填充。 布局变成这样:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".5" >
<ImageView
android:id="@+id/bookFrame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:src="@drawable/book_frame" />
<ImageView
android:id="@+id/previewImage"
android:layout_width="83dp"
android:layout_height="83dp"
android:layout_gravity="center_vertical|center_horizontal"
android:padding="1dp"
android:scaleType="centerCrop"
android:src="@drawable/abs__ab_bottom_solid_dark_holo" />
<ImageView
android:id="@+id/previewBorder"
android:layout_width="83dp"
android:layout_height="83dp"
android:layout_gravity="center_vertical|center_horizontal"
android:src="@drawable/preview_border" />
</FrameLayout>