0
为什么Canvas类中的drawBitmap()方法会扭曲图像? 当我使用ImageView的setImageBitmap()函数在ImageView的子类上设置位图时,图像完美呈现。为什么Canvas类中的drawBitmap方法扭曲图像
现在在Android 4.x中有一个错误,并且这个setImageBitmap会导致额外菜单项的问题。额外的菜单项目(通常超出使用More ...显示的六个菜单项目)会丢失触摸监听器。
我有以下代码,显示如何使用两种不同的方法呈现图像。
/**
* draws bitmap icons
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(bitmap == null){
bitmap = AppMain.getItemIcon(thisItem);
}
//drawBitmap(canvas, bitmap); //distorts image
drawBitmap(bitmap); //works perfect
}
//draw using setImageBitmap
private void drawBitmap(Bitmap bitmap){
if(bitmap != null){
this.setImageBitmap(bitmap);
Matrix m = this.getImageMatrix();
m.setRectToRect(new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight()),
new RectF(0, 0, this.getWidth(), this.getHeight()),
Matrix.ScaleToFit.CENTER);
this.setImageMatrix(m);
}
}
//draw using canvas.drawBitmap()
private void drawBitmap(Canvas canvas, Bitmap bitmap){
if(bitmap != null){
Matrix m = new Matrix();
m.setRectToRect(new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight()),
new RectF(0, 0, this.getWidth(), this.getHeight()),
Matrix.ScaleToFit.CENTER);
canvas.drawBitmap(bitmap, m, null);
}
}