我目前要在自定义视图中显示图片:
public class CustomImageView extends View
要安排图片,用户可以将密钥设置为全屏。现在,图像缩放到显示器的宽度和高度,保持纵横比:
按照缩放过程,图像比显示屏宽(在大多数情况下)。现在,用户可以设置焦点:一个必须尽可能居中显示的坐标。在图片1的情况下,焦点是x:50%和y:50% - >图像居中。这是通过
达成的@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (bitmapDrawable != null) {
bitmapDrawable.setBounds(bounds);
bitmapDrawable.draw(canvas);
}
}
bounds 包含缩放边缘的值。
现在是棘手的部分:
我想为缩放图像添加填充,但这会在已缩放图像的另一个缩放过程中结束:
图像2显示了不良影响。图像再次缩小,在这种情况下无法添加左边或右边的填充。
但我要显示的内容如下图所示:
我试图通过getDrawingCache()
仅获取缩放图像的可见部分。返回的 Bitmap 实际上并不是null,但它不会生效。
我考虑过创建填充的叠加层,但这会削减应该显示的部分图像。
最好的方法是在新的 Bitmap 或 BitmapDrawable 中获取缩放和可见的图像,但我没有找到成功的操作..
修改
为了让它更容易理解,我为你制作了另一幅画:
Padding Image http://fs1.directupload.net/images/150702/wpttzjcq.png