2012-11-08 3 views
1

나는 안드로이드 애플리케이션을 만들고있다. 사용자 지정 모양을 만들려면 여러 UI 클래스에서 draw 메서드를 재정의해야합니다. 이 클래스들은 모두 서브 클래스 View입니다. 나는 이것을하는 가장 좋은 방법이 무엇인지 궁금 하네. 나는 코드를 가능한 한 많이 재사용 할 수 있기를 바란다. 그래서 나는 물건 정리에 도움을 찾고있다. 내가 LinearLayout를 사용하려면 내가 CustomLinearLayout를 생성, 서브 클래스의 모든자바 디자인 패턴 : 여러 클래스에서 같은 메소드

-

옵션 1 : 내가 지금 그것을 볼 때, 나는 두 가지 옵션이 있습니다. ImageView을 사용하려면 CustomImageView을 만듭니다. 이러한 각 사용자 지정 클래스에서 나는 정확히 동일한 방법으로 draw을 재정의합니다. 이것은 코드를 반복하고 거의 아무것도하지 않는 클래스를 확장하기 때문에 효율적으로 보이지 않습니다.

옵션 2 - 슈퍼 클래스

을 하위 클래스 내 원래 생각은 View을 확장하고 이미 내가 사용하고자하는 모든 클래스의 슈퍼 클래스이기 때문에, CustomView을 만드는 것이 었습니다. 그러나 사용하려는 모든 기존 서브 클래스가 여전히 View (CustomView 아님)으로 확장되어 있기 때문에이 방법은 작동하지 않습니다.

더 좋은 방법이 있나요? 내가 놓친 게 있니?

+0

최종 목표는 무엇입니까? – GraphicsMuncher

+0

패턴 : 인터페이스를 만듭니다. –

+0

많은 서브 클래스에서 draw를 오버라이드하고 있습니다. 그런 다음보기의 비트 맵을 잡아서 품질이 저하 된 모양으로 수정하려고합니다. 이 "문제"는 지금까지 몇 번 보았던 것입니다. 따라서 프로젝트를 구성하는 더 좋은 방법이 있는지 이해하고 싶습니다. – raydowe

답변

4

가능한 한 가지 해결책은 드로 로직을 별도의 클래스 DrawingCode에 추출하는 것입니다. 여기에는 정적 메서드가 포함될 수도 있고 DrawingCode의 인스턴스를 사용하여 다른 매개 변수로 드로잉 코드를 사용자 정의 할 수도 있습니다. 물론 draw() 메서드를 덮어 써야하지만 코드 한 줄만 써야 DrawingCode.draw(param1, param2)을 호출 할 수 있습니다. 이렇게하면 한 곳에서 드로잉 코드를 저장하고 반복하지 않아도됩니다.

+0

최상의 솔루션이라고 생각됩니다. 나는 다르게 그려야하는 모든 것을위한 서브 클래스를 만들어야 만합니다.하지만 적어도 모든 무거움은 한 곳에서 하나입니다. – raydowe

+0

이 답변에 제시된 디자인 패턴의 이름을 알려주십시오. –