반응형
처음으로 안드로이드 앱을 만들고 있는데, 배운지 얼마 되지 않아서 이것저것 찾아보는 시간이 더 걸리네요...
최근에 xml 파싱을 통해서 공연정보를 뿌려주는 화면을 만들고 있는데,
이미지뷰때문에 속도가 상당히 느립니다.
쓰레드와 소프트레퍼런스(softreference)를 이용하면 속도가 좋아진다고 해서 찾아보니 멋진 공개 소스가 있더군요.
Multithreading For Performance
[한글번역] 안드로이드 멀티 스레드를 통한 성능 향상
위 소스를 참고해서 만드시면 됩니다.
속도 향상 퍼포먼스 문제는 해결이 되었는데, 위의 예제는 이미지파일이 다운로드되기 전까지는 검은색 배경화면을 사용했는데, 다른 이미지로 구현을 하려고 했는데, 잘 안되고, 마땅한 답변이 없어서 한참을 찾다가 해결을....-_-;;
뭐 고수분들이야 금방했겠지만, 저같은 초보분들은 참고하시길...
super(BitmapDrawable(R.drawable.loading));
가 오류가 나지 않아도, 이미지가 나오지 않는데, context가 없어서 이걸 넘겨받아야 합니다.
생성자를 호출할때 context를 받아와야 제대로 출력을 할수 있으므로,
super(Color.BLACK); 를 아래와 같이 변경해 줍니다.
super(BitmapFactory.decodeResource(context.getResources(), R.drawable.loading));
그리고나서 forceDownload 메쏘드에 가서 위처럼 또 변경을 해주시면 됩니다.
최근에 xml 파싱을 통해서 공연정보를 뿌려주는 화면을 만들고 있는데,
이미지뷰때문에 속도가 상당히 느립니다.
쓰레드와 소프트레퍼런스(softreference)를 이용하면 속도가 좋아진다고 해서 찾아보니 멋진 공개 소스가 있더군요.
Multithreading For Performance
[한글번역] 안드로이드 멀티 스레드를 통한 성능 향상
위 소스를 참고해서 만드시면 됩니다.
속도 향상 퍼포먼스 문제는 해결이 되었는데, 위의 예제는 이미지파일이 다운로드되기 전까지는 검은색 배경화면을 사용했는데, 다른 이미지로 구현을 하려고 했는데, 잘 안되고, 마땅한 답변이 없어서 한참을 찾다가 해결을....-_-;;
뭐 고수분들이야 금방했겠지만, 저같은 초보분들은 참고하시길...
### java소스중에 위와 같은 구문이 있는데, ColorDrawable 에서 상속받은것을 우선 BitmapDrawable에서 상속을 받습니다.
//static class DownloadedDrawable extends ColorDrawable {
static class DownloadedDrawable extends BitmapDrawable {
private final WeakReference<BitmapDownloaderTask> bitmapDownloaderTaskReference;
public DownloadedDrawable(BitmapDownloaderTask bitmapDownloaderTask, Context context) {
// super(Color.BLACK);
super(BitmapFactory.decodeResource(context.getResources(), R.drawable.loading));
bitmapDownloaderTaskReference = new WeakReference<BitmapDownloaderTask>(bitmapDownloaderTask);
}
public BitmapDownloaderTask getBitmapDownloaderTask() {
return bitmapDownloaderTaskReference.get();
}
}
super(BitmapDrawable(R.drawable.loading));
가 오류가 나지 않아도, 이미지가 나오지 않는데, context가 없어서 이걸 넘겨받아야 합니다.
생성자를 호출할때 context를 받아와야 제대로 출력을 할수 있으므로,
super(Color.BLACK); 를 아래와 같이 변경해 줍니다.
super(BitmapFactory.decodeResource(context.getResources(), R.drawable.loading));
### java
case CORRECT:
task = new BitmapDownloaderTask(imageView);
// DownloadedDrawable downloadedDrawable = new DownloadedDrawable(task);
DownloadedDrawable downloadedDrawable = new DownloadedDrawable(task, imageView.getContext());
imageView.setImageDrawable(downloadedDrawable);
imageView.setMinimumHeight(156);
task.execute(url);
break;
그리고나서 forceDownload 메쏘드에 가서 위처럼 또 변경을 해주시면 됩니다.
찾고나니 간단한데, 이걸 하느랴고 몇시간이 걸렸는지...-_-;;
남의것을 그냥 가져다가 쓰는것이 쉽지가 않네요.
아무쪼록 조금이나마 도움이 되시길 바라겠습니다.
남의것을 그냥 가져다가 쓰는것이 쉽지가 않네요.
아무쪼록 조금이나마 도움이 되시길 바라겠습니다.
반응형