我的问题
假设我有一个位图-将其称为尺寸为100×75的bmap(bmap.getWidth()x bmap.getHeight())
假设我有一个矩形,矩形,坐在电话屏幕上的一点(x,y),尺寸为500×350(宽x高)
我怎么写一段代码,将这个位图放在边界矩形内.
注意:因为我使用的是ContraintLayout,所以没有父级或相对性的概念.
另外,我想要一个在(0,1]范围内的缩放变量,该变量缩放bmap,但它将其位置保持在边界矩形rect的中心.
我的可怕尝试:
ImageView imgView = new ImageView(this.context);
imgView.setMaxWidth((int)(width*scale));
imgView.setMinimumWidth((int)(width*scale));
imgView.setMaxHeight((int)(height*scale));
imgView.setMinimumHeight((int)(height*scale));
imgView.setImageBitmap(bmap);
imgView.setX(x+((width-bmap.getWidth())/2));
imgView.setY(y+((height-bmap.getHeight())/2));
imgView.setAdjustViewBounds(true);
constraintLayout.addView(imgView);
这给出了以下结果(绿色圆圈的比例= 1,红色圆圈的比例= 0.6
有任何想法吗?我真的被卡住了.
解决方法:
对于这个问题,我看到的最简单的解决方案是使用android提供的容器来帮助我们获得此行为.首先,可以在约束布局内使用相对布局.没问题.使用两个相对布局以及其中的图像视图,只需使用centerInParent属性即可完成操作.我强烈建议不要以编程方式调整视图的大小.使用您拥有的容器和工具.