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

时间:2013-03-22 11:10:22

标签: android android-drawable

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

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

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

1 个答案:

答案 0 :(得分:11)

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

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

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

相对于第一层中位图的尺寸 ,即使这些尺寸大于放置DrawableLayer的视图(例如,当Bitmap由其自动重新定尺寸时)视图)。

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