Android:在特定大小的画布上绘制图像
我正在动态添加1个布局。在该视图中添加自定义视图。现在我想在画布上画一个和布局大小完全相同的图像Android:在特定大小的画布上绘制图像,android,ondraw,custom-view,Android,Ondraw,Custom View,我正在动态添加1个布局。在该视图中添加自定义视图。现在我想在画布上画一个和布局大小完全相同的图像 下面是我尝试过的自定义视图的代码 public BlockView(Context context, Bitmap bitmap, int layoutHeight, int layoutWidth) { super(context); this.bitmap = bitmap; this.width = bitmap.get
下面是我尝试过的
自定义视图的代码
public BlockView(Context context, Bitmap bitmap, int layoutHeight,
int layoutWidth) {
super(context);
this.bitmap = bitmap;
this.width = bitmap.getWidth();
this.height = bitmap.getHeight();
this.layoutHeight = layoutHeight;
this.layoutWidth = layoutWidth;
if (drawableWidth <= viewWidth && drawableHeight <= viewHeight) {
scale = 1.0f;
} else {
scale = Math.min((float) viewWidth / (float) drawableWidth,
(float) viewHeight / (float) drawableHeight);
}
mDrawable = new BitmapDrawable(getResources(), bitmap);
}
private static float getDegreesFromRadians(float angle) {
return (float) (angle * 180.0 / Math.PI);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
drawableWidth = mDrawable.getIntrinsicWidth();
drawableHeight = mDrawable.getIntrinsicHeight();
viewWidth = layoutWidth;
viewHeight = layoutHeight;
setMeasuredDimension(viewWidth, viewHeight);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int saveCount = canvas.save();
matrix.setScale(scale, scale);
matrix.postRotate(getDegreesFromRadians(angle));
matrix.postTranslate(position.getX(), position.getY());
canvas.concat(matrix);
mDrawable.setBounds(0, 0, drawableWidth, drawableHeight);
mDrawable.draw(canvas);
canvas.restoreToCount(saveCount);
}
public BlockView(上下文上下文、位图、int-layouthweight、,
内部布局(宽度){
超级(上下文);
this.bitmap=位图;
this.width=bitmap.getWidth();
this.height=bitmap.getHeight();
this.layouthweight=layouthweight;
this.layoutWidth=layoutWidth;
如果(drawableWidth mDrawable.setBounds(0,0,getWidth(),getHeight()),我尝试了它。但是通过使用它,整个图像会缩小到适合的区域。通过使用mDrawable.setBounds(0,0,drawableWidth,drawableHeight)
,图像不要收缩,通过翻译可以看到整个图像。你能告诉我其他方法吗?如果我理解正确,你希望在块视图中绘制图像,尽可能占用空间,同时保持图像的纵横比吗?是的。我希望与你说的完全一样。