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);
}
}