Android: вертикальная галерея?

Я ищу виджет, который ведет себя подобный виджету галереи, но прокручивает вертикально вместо горизонтально. Я погуглил все вокруг, и по-видимому ответ не является таким предварительно сделанным виджетом, существует.

Таким образом, я сказал, что я, о, хорошо, посмотрю на класс галереи в источнике андроида и изменю это для прокрутки вертикально вместо этого. Не настолько легкий. android SDK скрывает партии (понятно для обслуживания платформы), но это также делает его очень трудно для расширения виджетов. Класс галереи, например, использует много членской переменной от ее родителя, AbsSpinner (mSelectedPosition, etc.etc.), и родитель его родителя, и т.д...., которые нисколько не доступны с точки зрения разработчика приложения. Без доступа к тем членская переменная я не могу использовать подобный код от класса галереи для моего собственного использования.

За исключением продвижения цепочки наследования и помещенный исходный код тех родительских классов все в моем проекте или записи виджета всех с нуля, не используя существующие виджеты платформы, которые уже решили проблему, я не могу найти способ получить галерею вертикальной прокрутки.

Вокруг существует ли лучший путь? Почему платформа андроида делает расширяющийся виджет настолько трудным?

6
задан polyglot 20 February 2010 в 16:48
поделиться

1 ответ

Есть ли лучший способ обойти?

Поскольку мы не знаем, что вы создаете, это невозможно сказать. Я согласен с комментарием Йони Самлана, что ListView может быть достаточно для ваших нужд.

Почему фреймворк android делает расширение виджета таким сложным?

Хотя можно предположить, что переделанная Gallery может упростить вам ориентацию, основной команде Android приходится взвешивать такую переделку с другими приоритетами разработки.

Одним из таких приоритетов является верность SDK. Они хотят быть уверены, что в максимально возможной степени код, написанный для Android 1.5, может работать на Android 2.1 без изменений. Это ограничивает их в двух отношениях. Во-первых, они не могут просто изменить существующий Gallery, например, чтобы удовлетворить ваши желания, если это приведет к нарушению существующего API. Во-вторых, основная команда Android не будет раскрывать новые методы или классы, даже если они могут быть полезны для сторонних разработчиков, до тех пор, пока команда не будет готова поддерживать эти методы или классы в течение длительного времени.

Изначально Android был написан до появления SDK. Именно по этой причине большинство встроенных приложений (например, калькулятор) не могут быть созданы только с помощью SDK, а должны быть созданы как часть образа прошивки. Аналогичным образом, основная команда Android должна была принять решение в рамках создания начального SDK о том, как лучше взять существующий код и создать общедоступные вещи, с которыми мы можем работать, и защищенные/частные вещи, с которыми мы не можем работать, с учетом верности SDK. Как вы, возможно, заметили, Android огромен, и поэтому создание SDK должно было занять соответствующее огромное количество рабочего времени. Переписывать его, чтобы увеличить вероятность того, что кто-то сможет, скажем, создать вертикальную галерею, было, вероятно, не в их списке.

В идеальном мире, да, мы могли бы с большей готовностью расширять встроенные виджеты и значительно изменять их поведение. Точно так же, в идеальном мире у меня были бы волосы... :-)

.
12
ответ дан 9 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: