고유 한 가시성을 결정하는 표시 논리를 가진 사용자 지정 View
을 만들고 싶습니다. 그 논리를 유지하고 쉽게 재사용 할 수있게하기 위해 나는 View
서브 클래스를 만들고 getVisibility()
을 오버라이드하여 View
의 이벤트가 변경되면 가시성이 변경 될 수 있으므로 View
을 무효화 할 계획이었습니다. 가시성은 setVisibility()
을 호출하고 getVisibility()
을 무시하지 말고 변경할 수 있습니다. Romain Guy의 답변 this question을 참조하십시오.사용자 지정보기를 사용하면 고유 한 가시성이 결정됩니다.
setVisibilty()
이라고하는 정상적인 View
라이프 사이클/렌더링 프로세스의 일부로 호출되는 특정 메서드가 있습니까? 이미 invalidate()
으로 전화 했으므로 이것을 무시하여 setVisibility()
을 호출합니다. 하지만 그게 이상적인 곳인가요? invalidate()
에 View
의 속성을 설정하는 것이 모범 사례에 위배됩니다.
명확한 설명 : 앙드레 사용자 정의 View
의 가시성이 변경 될 수 있습니다 많은 것들이 있다는 것을 지적하고 그 시나리오는 사용자 정의 뷰의 사용이 매우 다릅니다. 그건 사실이야. 하지만이 질문은 방아쇠를 새로 고침하는 모습에 관한 것이 아닙니다. invalidate()
은보기의 모양이 변경되었다는 것을 안드로이드에 알리는 표준 방법 인 것 같습니다. 대신 에 대한 모범 사례 질문입니다. View
이 무효화 된 후 setVisibility()
으로 전화를 걸 때으로 전화를 겁니다. 예를 들어, onMeasure()
과 같이 프로세스의 잘못된 부분을 변경하고 싶지는 않습니다. 누구나 링크가 있다면 Android의 UI 렌더링 프로세스 다이어그램을보고 싶습니다.
setVisibility() 이후에 invalidate()를 호출하지 않습니다. 내가 무효화하고 View의 표준 콜백 중 하나에서 가시성을 설정하려고합니다. 나는 이상적인 것을 찾고있다. 제안에 관해서는 invalidateVisibility()가 아무런 이유없이 바퀴를 재발 명하는 것으로 보입니다. invalidate()에 의존하지 않고 표준 프로세스에 묶는 것이 훨씬 더 좋을까요? API 클라이언트가 이러한 일회성 메서드를 호출하도록 요구하면 뷰의 표시 로직에 대한 충분한 통찰력이있어 해당 동작이 View의 가시성에 특별히 영향을 미쳤음을 알 수 있습니다. 일종의 목적을 이겼습니다. – spaaarky21
@ spaaarky21 내 편집을 참조하십시오 – andr
업데이트 해주셔서 감사합니다. 미안하지만 내 질문이 처음에 분명하지 않은 것 같습니다. 반복적으로 호출되는'invalidate()'에 대한 여러분의 마지막 코멘트가 내 생각에 일종의 것이라고 생각합니다. 안드로이드와 같은 API에서, 이상적인 장소가 기존 프로세스와 "결합"되는 곳을 말하기는 때로는 어렵습니다. 어떤 방법은 당신이 기대하는 모든 상황에서 불리지 않을 수도 있고, 어떤 사람들은 너무 자주 호출 될 수도 있습니다. 귀하의 회신에 감사드립니다. – spaaarky21