2010-02-20 2 views
6

갤러리 위젯과 비슷하게 동작하지만 가로로 스크롤하지 않고 세로로 스크롤하는 위젯을 찾고 있습니다. 나는 주위를 인터넷 검색하고 분명히 대답은 그런 미리 만들어진 위젯이 존재하지 않는다는 것이다.Android : 수직 갤러리?

그래서 나는 안드로이드 소스에서 갤러리 클래스를 살펴보고 대신 세로로 스크롤하도록 수정하겠다고 말했습니다. 그렇게 쉬운 일은 아닙니다. 안드로이드 SDK는 많은 것을 숨기고 (틀림없이 프레임 워크 유지 관리를 위해), 위젯을 확장하는 것을 매우 어렵게 만듭니다. 예를 들어 갤러리 클래스는 부모 인 AbsSpinner (mSelectedPosition 등) 및 그 부모의 부모 등의 많은 멤버 변수를 사용합니다.이 변수는 앱 개발자의 입장에서 전혀 액세스 할 수 없습니다. 이러한 멤버 변수에 액세스하지 않으면 내 자신을 위해 갤러리 클래스에서 비슷한 코드를 사용할 수 없습니다.

상속 체인을 위로 이동하고 프로젝트에 이러한 상위 클래스의 소스 코드를 모두 넣거나 이미 문제를 해결 한 기존 프레임 워크 위젯을 사용하지 않고 위젯을 모두 작성하는 것보다는 짧습니다. 세로 스크롤 갤러리를 만드는 방법.

더 좋은 방법이 있습니까? 왜 안드로이드 프레임 워크가 위젯을 확장하는 것을 어렵게 만드나요?

+1

필요한 동작에 따라 다른 쪽의 ImageView가있는 수평 LinearLayout 내부에서 일반적인 ListView를 사용하지 않는 이유는 무엇입니까? –

답변

12

더 좋은 방법이 있습니까?

우리는 건물을 알지 못하기 때문에 말할 수 없습니다. Yoni Samlan의 의견에 동의하면 ListView으로 충분할 수 있습니다.

왜 안드로이드 프레임 워크는 위젯을 확장하는 것을 어렵게합니까? 그것은 다시 구현 Gallery이 간단 다르게는 동양하게 할 수 있도록 할 수 있다고 생각할 수 있지만

은 핵심 안드로이드 팀은 다른 개발 우선 순위에 대해 같은 재 구현의 무게를해야한다.

우선 순위 중 하나는 SDK 충실도입니다. Android 1.5 용으로 작성된 코드가 가능한 한 최대로 Android 2.1에서 수정없이 실행될 수 있도록하려는 것입니다. 이것은 두 가지 방법으로 그것들을 제한합니다. 첫째, 기존의 API를 깨뜨리는 경우, 예를 들어 자신의 욕구를 수용하기 위해 기존의 Gallery을 변경할 수 없습니다. 둘째, 안드로이드 핵심 팀은 팀이 장래를 위해 이러한 방법이나 클래스를 지원할 준비가되기 전까지는 타사 개발자에게 유용 할지라도 새로운 방법이나 클래스를 공개하지 않습니다.

안드로이드는 SDK가 존재하기 전에 처음 작성되었습니다. 그 때문에 대부분의 빌트인 애플리케이션 (예 : 계산기)을 SDK만으로 구축 할 수는 없지만 펌웨어 이미지의 일부로 구축해야하는 이유가 여기에 있습니다. 마찬가지로 핵심 Android 팀은 초기 SDK를 만드는 과정에서 기존 코드를 취하고 Google에서 처리 할 수있는 공개 자료를 만들고 SDK 충실도를 염두에두고 보호 할 수없는 사적 자료를 만드는 방법을 결정해야했습니다. 눈치 챘을 지 모르겠지만 안드로이드는 방대한 곳입니다. 따라서 SDK를 만드는 데는 막대한 시간이 필요했습니다. 누군가가 말할 수있는 확률을 높이기 위해 많은 것을 다시 작성하면 수직 계열 Gallery을 만들 수는 없을 것입니다.

이상적으로 우리는 내장 된 위젯을보다 쉽게 ​​확장하고 동작을 크게 수정할 수 있습니다. 마찬가지로, 이상적인 세계에서, 나는 머리카락을 가지고있을 것입니다 ...:-)

+9

+1 '마찬가지로, 이상적인 세계에서, 나는 머리카락을 가질 것이다 ... :-)' – Samuel