Android
Glide 공식 문서 읽기 스터디 - 3 (13pg~18pg)
Glide 공식 문서 읽기 스터디 - 3 (13pg~18pg)
2025.05.18TransitionOptionsTransitionOptions는 이미지 로드 완료 시 적용되는 애니메이션을 설정하는 데 사용됩니다. 예를 들어, withCrossFade()를 사용하면 이미지가 부드럽게 전환됩니다.Q. withCrossFade()에서 "교차 페이드"란 무엇인가요?"교차 페이드"는 이전 이미지가 서서히 사라지면서 새로운 이미지가 동시에 서서히 나타나는 애니메이션 효과를 의미합니다. 이러한 효과는 이미지 전환을 부드럽게 만들어 사용자 경험을 향상시킵니다. RequestBuilderRequestBuilder는 Glide에서 이미지 로드 요청을 구성하는 핵심 클래스입니다. asBitmap(), asDrawable(), asGif() 등을 사용하여 로드할 리소스의 타입을 지정할 수 있습니다.Q. ..
Glide 공식 문서 읽기 스터디 - 2 (7pg~12pg)
Glide 공식 문서 읽기 스터디 - 2 (7pg~12pg)
2025.05.04생성된 APIGlide가 @GlideModule로부터 자동으로 만들어낸 클래스 (ex. GlideApp)GlideApp.with(fragment).load(myUrl).placeholder(R.drawable.placeholder).fitCenter().into(imageView); q. Glide로 쓰는 거랑 GlideApp으로 쓰는 거랑 사용하는 입장에서 어떤 효용의 차이가 있는 건지? Glide모든 설정을 명시적으로 지정해야 함커스텀 옵션 적용 시 .apply(...)를 반복 사용해야 해서 코드가 장황해질 수 있음 GlideApp자주 쓰는 옵션을 메서드처럼 재사용 가능타입에 따른 커스텀 메서드도 가능 (ex. .asMyImage()) GlideExtensionGlideExtension 어노테이션이..
Glide 공식 문서 읽기 스터디 - 1 (~7pg)
Glide 공식 문서 읽기 스터디 - 1 (~7pg)
2025.04.28Glide란? Glide는 Android용 오픈소스 이미지 로딩 라이브러리로, 다음과 같은 특징이 있다.비디오 스틸, 이미지, 애니메이션 GIF 등 다양한 미디어를 로드하고 디스플레이 가능기본적으로 커스텀된 HttpUrlConnection 사용하지만, OkHttp와의 연동도 지원이미지 리스트 스크롤이 부드럽게 작동하도록 최적화되어 있음Glide의 이미지 처리 최적화 전략 1. 이미지 디코딩이미지 디코딩이란?이미지 파일(JPEG, PNG 등)을 앱에서 사용할 수 있는 형태인 Bitmap 객체로 변환하는 과정을 말합니다.디코딩 속도는 앱의 반응성과 직결되기 때문에 매우 중요합니다. 2. 자동 다운 샘플링자동 다운 샘플링이란?Glide는 원본 이미지가 너무 클 경우, 화면에 필요한 해상도에 맞춰 이미지를 자동..
data class 디컴파일
data class 디컴파일
2025.04.27배경최근에 팀원분이 버그를 해결해서 pr을 올려주셨다.기존 코드는 equals 메서드를 직접 오버라이드 해서 일부 필드만 비교하는 형태였는데 모든 필드를 비교하도록 수정해주셨다. 정상 동작은 확인했으나 "data class에서 자동으로 오버라이드해주는 equals로는 해결 안 되나?"라는 생각이 들었다.자동 제공을 해주는 것만 알았지 구체적으로 어떻게 동작하는지까진 확인을 해본 적이 없었다. 결론그래서 직접 디컴파일을 해봤는데 data class는 모든 필드에 대해 동등성을 비교하는 방식으로 동작하고 있었다.이 점을 리뷰로 남겼고, 역할이 겹치므로 수정해주셨던 코드를 삭제하는 방향으로 개선을 해냈다. 추가로 hashCode에 대한 오버라이드 코드도 삭제도 같이 해주셨는데, 검색을 해보니 그 이유는 h..
컴포즈 - 1장 컴포즈 앱 첫 빌드
컴포즈 - 1장 컴포즈 앱 첫 빌드
2025.01.19Row() 함수는 modifier라는 매개변수를 받는다. modifier는 젯팩 컴포즈의 핵심 기술로 컴포저블 함수의 외형과 행위에 영향을 준다. 3장에서 자세히 다룬다. Recomposition : 컴포저블 함수를 다시 그리는 것. MutableState 타입의 값을 변경하면 컴포저블 함수는 다시 그려지거나 다시 채색된다. Box()는 한 개 이상의 자식 컴포저블 함수를 포함할 수 있다. remember, mutableStateOf는 모두 상태를 생성하고 관리하는 데 매우 중요한 역할을 한다. 컴포저블 함수가 상태를 갖는다면 상태가 변경될 경우 컴포저블 함수는 재구성된다. mutableStatesStateOf()를 사용해 상태를 생성하고 remember를 사용해 상태를 기억한다. 그리고 상태를 다른 ..
LifecycleObserver는 왜 쓰는 걸까?
LifecycleObserver는 왜 쓰는 걸까?
2024.09.08다른 분의 코드를 보다가 LifecycleObserver라는 것을 새로 알게 되었다. 생명주기 관련하여 특정 동작을 처리하고 싶을 때 사용하는 것인데 "Activity나 Fragment에서 onDestroy() 등 필요한 시점을 override해서 쓰면 되는 거 아닌가? 왜 이렇게까지 하지?"라는 의문이 들었다. 개인적으로는 생명주기 관련 처리들을 따로 관리함으로써 아래와 같은 장점이 있을 것 같다고 느꼈다.관리 수월가독성 개선 그리고 공식 문서를 찾아보니 내 생각과 비슷한 내용이 있었다.수명 주기의 현재 상태에 따라 UI와 다른 구성요소를 관리하는 호출이 너무 많이 발생하게 됩니다. 여러 구성요소를 관리하면 onStart() 및 onStop()과 같은 수명 주기 메서드에 상당한 양의 코드를 배치하게 ..