2013-03-02 2 views
3

맞춤 레이아웃을 구현 중입니다. 그것은 이질적 인 그리드이고 타일이 텍스트로 된 이미지 일 것이라는 사실을 제외하고 아래의 것과 같습니다. 또한 애니메이션 효과가 있습니다. 기본 데이터가 변경 (항목이 추가, 제거, 재정렬) 될 때마다 애니메이션이 있으며, 각 타일이 새 위치로 이동합니다. 그리고 이것은 완벽하게 작동합니다.맞춤형 레이아웃에서보기 재활용하기

전체가 ScrollView 안에 있습니다. 사용자가 앱을 시작하면 몇 개의 타일 (최대 20 개)이 나타납니다. 그가 두루마리의 바닥에 도달하면 새로운 타일이로드됩니다. 타일은 RelativeLayouts입니다.

제 질문은보기의 재활용에 관한 것입니다.ListView 또는 GridView과 같은 여러 하위보기를 허용하는 일반적인 레이아웃에는 재활용 메커니즘이 있습니다. 스크롤 할 때보기가 표시되지 않으면 다시보기로 표시되고 사용자가 다시 볼 때 표시됩니다.

이러한 동작을 구현해야합니까? 내가하지 않으면 어떻게 될까? 새 데이터가 도착할 때 하위보기 (레이아웃의 보이는 부분에없는 하위보기)를 새 위치에 애니메이션으로 표시해야 할 수도 있으므로 구현하는 것이 가능합니까?

아니면 보이는 영역 밖에있을 때 비트 맵을 재활용해야합니까? 이것은 OutOfMemory를 칠 수있는 곳일 것입니다. 그렇지 않습니까?

Heterogenous Grid

답변

2

확실히 항목의 수를 효과적으로 제한이 특히 재활용을 권 해드립니다.

당신이 말하는 것처럼 메모리 문제는 크게 비트 맵 처리에 달려 있지만 재활용하지 않으면 더 많은 항목을로드 할 때 저더링의 기회가 더 많이 생깁니다. 더 많은 뷰를 생성해야 할 필요가 있기 때문입니다.

사용자 정의 레이아웃을 사용하는 경우 뷰 리사이클이 매우 간단해야합니다. 뷰의 캐시를 유지하고 Android의 어댑터 클래스와 비슷한 패턴 (예 : getView(int position, View convertView ..))을 따르십시오. 화면을 오프 스크린에서 애니메이션으로해야하는 경우 getView()을 사용하여 사용하지 않는보기를 가져와 모델 데이터를 포함하도록 업데이트하십시오 (MVC를 사용하지 않는 경우 권장).

+0

응답 해 주셔서 감사합니다. 생각이 없습니다. "새로운 데이터 애니메이션"을 효율적으로 수행하는 방법은 있지만 효과가있을 것입니다. 여기에서 재활용은 레이아웃에서 제거 ('removeView (View)')하고 캐시를 유지하는 것입니까? 필요할 때 추가하는 것입니까? 거기에 뭔가 다른해야합니까? –

+0

난 그냥 visibi보기를 설정할 수 있습니다 생각 lity GONE을 제거하지 말고 (분명히 재사용 할 때 VISIBLE), 레이아웃은 GONE Views를 무시해야합니다. – nmw

+0

흠, 나는 가시성을 설정하는 것이 재활용과 동등하다고 생각하지 않습니다. –