Java 如何在Android中调整LayerDrawable的大小和位置
我有一个LayerDrawable,它应该显示5个位图。1个背景和4个图标(每个可绘制的图层可能不同),如网格。不幸的是,这些图标的宽度和高度不同。我的问题是调整它们的大小,同时保持它们的比例,并将它们放在它们的位置内(1-4个图标,5个背景): 如果我调整这些位图的大小,给它们Java 如何在Android中调整LayerDrawable的大小和位置,java,android,bitmap,drawable,layer,Java,Android,Bitmap,Drawable,Layer,我有一个LayerDrawable,它应该显示5个位图。1个背景和4个图标(每个可绘制的图层可能不同),如网格。不幸的是,这些图标的宽度和高度不同。我的问题是调整它们的大小,同时保持它们的比例,并将它们放在它们的位置内(1-4个图标,5个背景): 如果我调整这些位图的大小,给它们Gravity.CENTER它们将不再适合背景矩形的边界。如果我离开Gravity.CENTER,当我调用layerDrawable.setLayerSet(numlayer,left,top,right,bottom)
Gravity.CENTER
它们将不再适合背景矩形的边界。如果我离开Gravity.CENTER
,当我调用layerDrawable.setLayerSet(numlayer,left,top,right,bottom)
时,它们似乎会被重新缩放。
正确的方法是什么?如何在正确放置它们的同时保持它们的比率?
到目前为止,我还不明白为什么BitmapDrawable中的getIntrinsicWidth/Height返回的是比原始位图中的getWidth/Height更小的内容。我的尝试:
1.从XML中获取它们,将“虚拟可绘制”放在其中,并用上面描述的结果替换它。 2.在我的程序中创建LayerDrawable,并在其中传递所有Drawable。似乎SetLayerSet没有影响,或者我只看到背景(它是我可绘制数组中的元素0)
3.扩展LayerDrawable并尝试自己跟踪任何没有合理结果的内容默认的
BitmapDrawable
,用给定的位图填充其边界。如果开始使用重力
,则位图将根据给定的重力
进行定位。我想在您的情况下,最好的选择是创建自己的可绘制的
关于getInstruction[Height | Width]方法,它们返回基本位图的实际大小,如果系统在加载时调整其大小(例如,在mdpi屏幕上加载的hdpi图像),则可能会有所不同
==================
| | | |
| 1 | | 2 |
|------.5 .------|
|------. .------|
| 3 | | 4 |
| | | |
==================