Android Glide -> Fresco 삽질로 얻은 정리

목적: 트윗에 첨부된 이미지, 프로필 사진을 빠르게 불러오기 위해 Glide 대신 Fresco 도입

ImageView -> SimpleDraweeView ( Fresco ) 로 변경.

뭐. 이거야 문제는 없음. 단, 아무리 SimpleDraweeView 가 ImageView 를 부모 클래스로 가지고 있다고 해도, 절대로 setImageDrawable 같은 직접적으로 접근하는 것을 사용하지 않아야. 자세한 내용은 여기로

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/profileImage"
    android:layout_width="50dip"
    android:layout_height="50dip"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="10dip"
    android:layout_marginTop="5dip" />

GenericDraweeHieracy 로 설정해야 되는 것들을 따로 Utils 클래스로 분리

주로 사각형 외곽 원형, 헤더 이미지를 위한 CENTER_CROP + 반투명 검은 배경 설치 정도가 해당됨

public class FrescoUtils {

    public static GenericDraweeHierarchy setRounding(boolean isCircleUseAvater, SimpleDraweeView imageView) {
        GenericDraweeHierarchy hierarchy = imageView.getHierarchy();

        RoundingParams roundingParams = hierarchy.getRoundingParams();
        if (roundingParams == null)
            roundingParams = new RoundingParams();

        roundingParams.setCornersRadius(10);
        roundingParams.setRoundAsCircle(isCircleUseAvater);
        hierarchy.setRoundingParams(roundingParams);

        return hierarchy;
    }

    public static GenericDraweeHierarchy forHeader(SimpleDraweeView imageView) {
        GenericDraweeHierarchy hierarchy = imageView.getHierarchy();
        ColorFilter filter = new PorterDuffColorFilter(0x87000000, PorterDuff.Mode.DARKEN);

        hierarchy.setActualImageScaleType(ScalingUtils.ScaleType.CENTER_CROP);
        hierarchy.setActualImageColorFilter(filter);
        return hierarchy;
    }

    public static GenericDraweeHierarchy setCenterCrop(SimpleDraweeView imageView) {
        GenericDraweeHierarchy hierarchy = imageView.getHierarchy();

        hierarchy.setActualImageScaleType(ScalingUtils.ScaleType.CENTER_CROP);
        return hierarchy;
    }
}

결과: 다소 만족

실제 사용하고 있었던 G Pro 2 Android 5.0.2 에서는 별다른 효과가 없었으나, Optimus G Android 6.0 PureNexus 에 설치해보니 스크롤에 끊김이 없음을 확인.

(아마, 더 저사양 기기에서 확실하게 잘 굴러가지 않을까 생각하는데.. 뭐, 테스트 더 해봐야 알겠지.)

여기서 더 해야할 것


본 글은 본인의 Medium에 있던 글을 가져온 것입니다.