ScrollView 내에서 다운로드 한 이미지 나 텍스트로 채워지는 여러 LinearLayouts가 있습니다. LinearLayouts에는 LayoutAnimation이 적용되어 있기 때문에 각 LineAnimation이 그려 질 때 "슬라이드"됩니다. 오프 스크린 LinearLayouts를 강제적으로 그리는 방법이 있을까? 그래서 사용자가 스크롤하여 애니메이션이 이미 완료되었습니다. 그래서 같은 각 뷰 측정 시도했다 : (컨테이너는 뷰 그룹이다)ViewGroup에서 화면을 강제로 해제하려면 어떻게합니까?
int measuredWidth = View.MeasureSpec.makeMeasureSpec(LayoutParams.FILL_PARENT, View.MeasureSpec.AT_MOST);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED);
container.measure(measuredWidth, measuredHeight);
container.layout(0, 0, container.getMeasuredWidth(), container.getMeasuredHeight());
container.requestLayout();
을하지만 그들은 일반적으로 잘하지만 애니메이션을 만드는 (스크롤하는 동안 화면에 나타날 때까지 그들은 여전히 그릴하지 않습니다. . 어, 괜찮아요)
애니메이션이 도착하면 뷰 그룹에 표시하고 싶습니다. 다운로드 한 데이터로 채워집니다. 즉, 화면에 표시되면 애니메이션이 표시됩니다. 그 시간에 화면이 꺼지면 그렇지 않습니다. 또한 특정 뷰 그룹이 주어진 시간에 화면 상에 나타나거나 꺼지는 것을 가정 할 수 없기 때문에 뷰 그룹은 어떤 순서로도 될 수 있습니다. 가장 쉬운 방법은 다운로드가 완료되면 어디서든 다운로드하도록 강요하는 것입니다. 두 번째 부분에 관해서는 - 나는 container.invalidate()를 시도했지만 운은 보지 못했습니다. 참조 할 canvas가 없기 때문에 draw()를 사용할 수 없습니다. 단지 뷰 그룹입니다. – wirbly
끝날 때 애니메이션을 삭제하십시오. –
그러나 안드로이드는 화면 상에 나타날 때까지 애니메이션을 시작하지 않습니다. (내 경우에는보기로 스크롤됩니다.) 그래서 사용자가 이미 보았 기 때문에 애니메이션이 끝날 때까지 기다리는 것이 너무 늦었습니다. 애니메이션이 화면 밖에서 발생하지 않습니다. – wirbly