在android中相对于屏幕宽度缩放图像

时间:2011-01-28 23:23:11

标签: android image android-layout scale

我有两张图片的布局:

  • 应该延伸到屏幕宽度的
  • 上面的一个应该缩放到相同的比例,第一个被自动缩放(相对于原始图像大小)

更具体:两张图片是同一张图片的切片,因此其中的一些细节应该匹配。
我可以用XML制作吗?

如果我不能通过XML完成,也许我可以预先缩放图形。在这种情况下,我应该如何对它们进行预定标?

2 个答案:

答案 0 :(得分:6)

这有点像黑客,但它允许你在xml中执行此操作。

如果你知道,例如,顶部图像是底部图像大小的X%,那么你可以使用LinearLayout的layout_weight来根据屏幕的百分比来定位和调整顶部图像的大小:

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <ImageView android:id="@+id/left_filler" android:layout_weight="20"
        android:layout_width="wrap_content" android:layout_height="wrap_content"/>
    <ImageView android:id="@+id/top_image" android:layout_weight="50"
        android:layout_width="wrap_content" android:layout_height="wrap_content"/>
    <ImageView android:id="@+id/right_filler" android:layout_weight="30"
        android:layout_width="wrap_content" android:layout_height="wrap_content"/>
</LinearLayout>
 ... bottom image

上面的内容会将top_image的大小设置为屏幕的50%,偏离左边20%。只要top_image的大小是bottom_image的50%,这将保持相似的比例。

或者,执行此操作的“正确”方法可能是在自定义视图中覆盖onDraw()并使用画布绘制方法。

答案 1 :(得分:0)

您可以使用Canvas类方法drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) 通过自动缩放/平移来填充目标矩形来绘制指定的位图。这可以用于具有不同Rect的位图。可以通过划分布局的当前宽度和高度来制定Rect。因此,程序将根据具有不同屏幕尺寸的设备缩放图像。