android设置背景图片不填充整个_Android背景图填充不变形

在Android中,通常背景图片会被拉伸填充视图,但这样可能导致变形。本文介绍了一种方法,通过缩放图片并在一个方向上使用空白像素填充,保持图片比例。具体实现包括使用BitmapFactory.decodeResource生成Drawable,设置BitmapFactory.Options的inDensity和inTargetDensity,以及调整Shader.TileMode以实现特定方向的填充模式。
摘要由CSDN通过智能技术生成

android设置背景图片默认会被拉伸至填满视图大小,试过使用.9图,但在线性布局不生效,最后找到一种解决方式,将图片缩放以保证在一个方向充满,另一方向使用空白像素填充,注意*图片拉伸方向边界一定要为透明或背景色。

首先使用BitmapFactory.decodeResource生成背景图Drawable(没如果不是资源文件使用其他对应方法),设定BitmapFactory.Options在生成图片的同时完成图片的缩放。Options中默认只能通过inSampleSize设定缩小的倍速(2的整数倍),显然无法满足需求,在inScaled属性的注释上可以看到:

当此标识位设定为true时,如果inDensity和inTargetDensity属性值均不为0,bitmap将在加载时进行缩放,适配inTargetDensity大小,而不是在每次绘制时进行缩放。若使用BitmapRegionDecoder则会忽略这个标记,不会基于密度缩放(虽然支持通过inSampleSize设置缩小)。当此标识默认为true,如果需要,应该关闭。点9图将忽略此标示,总是进行缩放。如果inPremultiply设置为false,且图像有alpha值,则将此标识设置为true可能导致错误的颜色。

因为通过一下两步完成缩放计算:

①:设置Options中inDensity为系统densityDpi(context.getgetResources().getDisplayMetrics().densityDpi);

②:根据缩放计算Options中inTargetDensity的值(目标视图宽度 /图片宽度) * inDensity值)

此时通过public static Bitmapdeco

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值