안드로이드 개발 질문/답변
(글 수 45,052)
매트릭스 이용해서 비트맵을 로테이션하는데
이미지가 흐릿해지는 현상이 있습니다
90도 씩 돌리면 안그러는데요
조금씩 돌리니까 흐릿해져요
이거 해결방법 없나요??
int w2 = rotImage.getWidth();
int h2 = rotImage.getHeight();
Matrix mtx2 = new Matrix();
mtx2.postRotate(1);
rotImage = Bitmap.createBitmap(rotImage, 0, 0, w2, h2, mtx2, true);
mImageView.setScaleType(ScaleType.CENTER);
mImageView.setImageBitmap(rotImage);




안녕하세요? 저도 똑같은 고민을 하다가 해결이 된것 같습니다. 흐릿해지는것 뿐아니라 쓰레드로 돌리면 다운까지 되는 문제가 있더군요
쓰레드 상에서 처리한 내용임으로 업데이트와 온드로우는 계속 호출되어 집니다. 아래와 같이 처리해주니 잘 되는듯 하네요 참고가 되었스면 좋겠습니다.
public 생성자(Bitmap bitmap,int x,int y,int degrees) {
super(bitmap);
// TODO Auto-generated constructor stub
m_x=x;
m_y=y;
m_bitmap2=bitmap;
this.degrees =degrees;
}
public boolean onTouchEvent(MotionEvent event) {
return true;
}
public void Update(long GameTime) {
// TODO Auto-generated method stub
if(GameTime>time+60){
time=GameTime;
m_bitmap2=rotate(m_bitmap,this.degrees);
degress++;
}
}
public void onDraw(Canvas canvas){
canvas.drawBitmap(m_bitmap2, m_x,m_y, null);
}
public Bitmap rotate(Bitmap b, int degrees) {
if ( degrees != 0 && b != null ) {
Matrix m = new Matrix();
m.setRotate( degrees, (float) m_x+b.getWidth() / 2, (float) m_y+b.getHeight() / 2 );
try {
Bitmap b2 = Bitmap.createBitmap( b, 0, 0, b.getWidth(), b.getHeight(), m, true );
if (b != b2) {
// b.recycle();
b = b2;
}
} catch (OutOfMemoryError ex) {
// We have no memory to rotate. Return the original bitmap.
}
}
return b;
}