在带有Bitmap的LayerDrawable上使用setLayerInset会产生意外结果

Bre*_*dan 4 android android-drawable

我正在使用LayerDrawable动态地在小位图图像上放置小点位图('热点').索引0处的图层包含大图像.根据大图像的百分比,向我指定图像上的点位置.例如,我可能有一个热点,应该是左边50%,大底部图像顶部75%.为了将点定位在图像的正确部分上,我正在使用

setLayerInset(layer, leftOffset, topOffset, rightOffset, bottomOffset)
Run Code Online (Sandbox Code Playgroud)

并根据包含LayerDrawable的ImageView的宽度和高度计算偏移量.我很高兴计算是正确的,并且正在检索正确的高度和宽度,并期望正确显示点,但它们不是.这些点沿着Y轴倾斜,它们的位置不正确(太高,太靠左).有没有人遇到类似的问题,并找到了解决方案?

Bre*_*dan 11

我花了一天半的时间研究这个问题,试图理解数字,这就是我发现的:

在我正在处理的情况下,第一层包含一个BitmapDrawable,我正在设置subseqent图层的插图,调用中的偏移量:

setLayerInset(layer,leftOffset,topOffset,rightOffset,bottomOffset)

相对于在第一层中,位图的尺寸,即使这些尺寸比在其被放置在所述DrawableLayer视图(例如,当位图被由视图自动redimensioned)更大.

奇怪而意外,但却是如此.希望这能节省一些时间.

  • 额外的问题:在设置LayerDrawable边界之前调用setLayerInset,因为setLayerInset似乎没有正确地使布局无效,否则将不予考虑. (5认同)