리스트뷰 쓸 일이 있어서 배경을 drawable에 넣고 지정했는데
그라데이션이 완전 이상하게 나오더군요.
그래서 이렇게 저렇게 해보다가.. 걍 뷰를 하나 만들었습니다. 완전 기초적인 내용이구요.
listview의 경우 RelativeLayout으로 이미지뷰와 리스트뷰를 겹쳐 그렸더니 잘 나오네요.
해당 뷰를 이용하면 이미지 확대/축소시 퀄리티가 현격히 낮아지던 문제가 해결됩니다.
(이상하게 설명해 놓으니 뭔 말인지 모르실듯 싶어서 첨부했음)
보기 안 좋으면 첨부한 소스를 받으세요.
오픈한 것이니 이상하거나 그런 부분은 알아서 커스텀 하시구요~!
import java.io.IOException;
import java.io.InputStream;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;
public class SHARP_IMAGE_VIEW extends View{
protected Bitmap img;
protected Context cont;
public SHARP_IMAGE_VIEW(Context context){
super(context);
cont = context;
}
public SHARP_IMAGE_VIEW(Context context, AttributeSet attrs) {
super(context, attrs);
cont = context;
}
public void Close(){
img.recycle();
}
public void setImage(int resId){
InputStream is = cont.getResources().openRawResource(resId);
try{
img = BitmapFactory.decodeStream(is);
}
catch(Exception e){ e.printStackTrace(); }
finally {
try {
is.close();
}
catch(IOException e) { e.printStackTrace(); }
}
}
@Override
protected void onMeasure(int width_spec, int height_spec) {
int width=0,height=0;
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager)
cont.getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(displayMetrics);
switch(MeasureSpec.getMode(width_spec)) {
case MeasureSpec.UNSPECIFIED: width = width_spec;
break;
case MeasureSpec.AT_MOST:{
if(img==null) width =
displayMetrics.widthPixels;
else width =
img.getWidth();
break;
}
case MeasureSpec.EXACTLY: width =
MeasureSpec.getSize(width_spec); break;
default: break;
}
switch(MeasureSpec.getMode(height_spec)) {
case MeasureSpec.UNSPECIFIED: height =
height_spec; break;
case MeasureSpec.AT_MOST:{
if(img==null) height =
displayMetrics.heightPixels;
else height =
img.getHeight();
break;
}
case MeasureSpec.EXACTLY: height =
MeasureSpec.getSize(height_spec); break;
default: break;
}
setMeasuredDimension(width,height);
}
@Override
public void draw(Canvas canvas){
super.draw(canvas);
Paint paint = new Paint(3);
Rect dest_rect,src_rect;
if(img!=null){
dest_rect = new Rect(0,0,getWidth(),getHeight
());
src_rect = new Rect(0,0,img.getWidth(),img.getHeight
());
canvas.drawBitmap(img, src_rect, dest_rect, paint);
}
}
}

소스 보시면 아시겠지만 view만드시고 setImage로 resourceid 전달해서
배경 지정하시고 끝날때 Close호출해 주시면 됩니다~!