我在android中创建了一个简单的自定义控件,并在其上放置了一个背景图像。当控件放在不同尺寸的布局上时(即拉伸时),我遇到了问题,具体来说:
我想在特定的位置和大小上叠加一个矩形,我知道原始图像的像素位置。我怎么能用我的控制来做到这一点。我怀疑这样的事情是不可能的,因为它是一个9补丁。我最好的办法是从原来的左上角开始计算百分比,或者考虑到某些部分是否伸展而有些部分没有变得毫无意义?
在自定义控件中,我在构造函数中设置了这样的图像:
setBackgroundResource(R.drawable.buttonbt);
哪个工作正常,但是我想最初在onDraw事件中绘制它,因为我可能想要根据属性更改来更改它,例如
Bitmap b=BitmapFactory.decodeResource(getResources(), R.drawable.buttonbt);
canvas.drawBitmap(b, 0, 0, null);
但是这并没有根据其边界框的大小调整大小,它只是试图以它的原始大小显示它而不缩放以适应。你会怎么做(前一种方法是否更好)。
感谢。
答案 0 :(得分:1)
您可以创建一个缩放位图,如下所示
Bitmap bitmap = Bitmap.createScaledBitmap(b, width, height, true);
希望它对你有用。请让我知道!
答案 1 :(得分:0)
好的,当你的视图说100x100像素而你的位图是300x300时你可以在inDraw方法中尝试以下(伪代码):
# src is a Bitmap 300x300
# dst is a View 100x100
mMatrix.setRectToRect(RectF src, RectF dst, Matrix.ScaleToFit stf)
canvas.save()
canvas.concat(mMatrix)
canvas.drawBitmap(mBitmap, 0, 0, null)
// actually it will draw a rect with left/top edge at (10, 10) and right/bottom at (20, 20)
canvas.drawRect(30, 30, 60, 60, paint)
canvas.restore()