내가 현재 작업하고있는 응용 프로그램의 경우 여러 이미지 (UIScrollView
의 페이징 사용 설정 가능)에 대해 ImageSwitcher
과 같은 것을 만들었습니다.안드로이드에서 ImageViews 사이에서 페이징 최적화?
처음에 나는 ImageViews
을 하드 코딩하고 생성/인플레이션에 드로어 블 리소스를로드했지만 약간의 조정 (개선 사항이라고 생각한 것) 후에 필요한 뷰를 3으로 줄였습니다. 그 중 2 개는 ImageViews
현재 페이지를 표시하고 현재 페이지와 새 페이지 사이에 애니메이션을 적용합니다. 이러한 변화와
ImageViews
에서 새 이미지의 동적 로딩을위한
setImageResource
/
setImageDrawable
를 사용하기 시작했다.
실망스럽게도 성능은 페이지를 통해 더 빨리 슬라이딩 할 때 약간의 지연을 느끼는 정도까지 악화되었습니다. TraceView
을 간략히 살펴보면 앱을 사용하는 동안 총 무려 17.4 %가 다음 무거운 방법보다 5 배 이상 더 많았으며, 드로어 블 리소스의 동적 설정에 의해 호출 된 BitmapFactory.nativeDecodeAsset
에서 소모되었습니다.
나는 이것을 우회하는 방법을 생각하고 있으며 가능한 한 최선의 방법으로하고 싶습니다. 어떤 제안이라도 환영합니다.
ImageSwitcher를 재발견 한 것 같습니다. ImageSwitcher는 다음을 수행합니다. 현재 이미지 및 다음 이미지를 표시하는 데 사용되는 2 개의 ImageViews. 소리가 나는 것과는 달리 처음에는 보였던 것처럼 두 이미지간에 앞뒤로 전환하는 데 사용되지 않습니다. 저는 이미지의 전체 피드를 통해 애니메이트하는 것과 같은 것들을 위해 종종 그것을 사용합니다 (그리고 다른 스위처를 사용하여 타이틀을 안팎으로 움직입니다). 나는 이것이 당신의 성과 문제를 해결할 것이라는 것을 모른다. 그러나 적어도 그것은 어떤 것들을 배제 할 수있다. – lilbyrdie
제안 해 주셔서 감사합니다. ImageSwitcher를 여러 가지 이유로 재발견해야했습니다. 먼저 ImageView를 여러 개의 ImageView가 포함되어 있기 때문에 시작한 다음 현재 뷰와 도우미 뷰로 축소했습니다. 두 번째로 TextView 구성 요소를 제어해야하기 때문에 쉽게 ImageViews에서 도달 할 수 있습니다 - 나는 계층 구조를 평평하게하고 내가 원하는 것을 할 수있는 나의 커스텀 스위처 뷰를 사용할 것이라고 생각했습니다. 결국, AllocationTracker 및 TraceView로 재생 한 후 문제가 사용자 정의 ViewGroup에 있다고 생각하지 않습니다. –