背景を回転させて回転したイメージビューを作成しましたが、結果は「エイリアス」になります。
通常の方法は、Paint
アンチエイリアスフラグを使用して作成し、それを使用してビットマップを描画することです。ただし、背景はビューのdraw(Canvas canvas)
方法で描画されているため、方法でペイントを使用することはできませんcanvas.drawBitmap
。
ここに、背景を含むimageviewを回転させるための私のコード:
@Override
public void draw(Canvas canvas)
{
canvas.save();
canvas.rotate(mAngle%360, canvas.getClipBounds().exactCenterX(), canvas.getClipBounds().exactCenterY());
canvas.scale(scaleWidth, scaleHeight, canvas.getClipBounds().exactCenterX(), canvas.getClipBounds().exactCenterY());
super.draw(canvas);
canvas.restore();
}
角度に応じて高さと幅を調整する私のonMeasureメソッド
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int w = getDrawable().getIntrinsicWidth();
int h = getDrawable().getIntrinsicHeight();
double a = Math.toRadians(mAngle);
int width = (int) (Math.abs(w * Math.cos(a)) + Math.abs(h * Math.sin(a)));
int height = (int) (Math.abs(w * Math.sin(a)) + Math.abs(h * Math.cos(a)));
scaleWidth = (width != 0) ? ((float) w) / width : 1;
scaleHeight = (height != 0) ? ((float) h) / height : 1;
setMeasuredDimension(width, height);
}
では、このローテーションでアンチエイリアシングを「有効」にするにはどうすればよいですか?