Pergunta

Resumo
Eu estou usando uma classe ListField para exibir um conjunto de informações verticalmente. Cada linha que ListField ocupa 2 / 5th do da altura da tela.

Como tal, ao rolar para o próximo item (especialmente ao exibir um item parcialmente obscurecida pelas restrições da altura da tela), toda a rolagem / ação foco é muito nervosa.

Gostaria de corrigir esse jumpiness através da implementação de rolagem suave entre as ações de rolagem / foco. Isso é possível com a classe ListField?

Exemplo
Abaixo está uma imagem exibindo o assunto em questão.

text alt
(fonte: perkmobile.com )

Uma vez que o usuário rola para baixo a linha ListFieldTHREE, esta linha é "enrolado" em vista de uma forma muito nervosa, não rolagem suave. Eu sei fazer a altura da linha menor irá atenuar este problema, mas eu não wan para ir por esse caminho.

Main Pergunta
Como eu faço rolagem suave em um ListField?

Foi útil?

Solução

Assumindo que você deseja que o comportamento que o usuário rola para baixo em 1 clique do trackball, e o próximo item é então destacado, mas em vez de um salto de rolagem imediata você ter uma rolagem suave para fazer o novo item visível (como no Google aplicativo Gmail para BlackBerry), você vai ter que rolar o seu próprio componente.

A idéia básica é a subclasse VerticalFieldManager, em seguida, em um pergaminho (key off o método MoveFocus) você tem uma atualização de thread separada uma variável posição vertical, e invalidar o gerente várias vezes.

O fio é necessário porque se você pensar sobre isso você está dirigindo uma animação fora de um evento de usuário - a rolagem suave é realmente uma animação sobre o BlackBerry, uma vez que dura mais tempo do que o evento que desencadeou

Eu tenho sido um pouco vago sobre detalhes, e isso não é uma coisa muito fácil de fazer, por isso espero que isso ajude um pouco.

Outras dicas

Não há uma maneira oficial API de fazer isso, tanto quanto eu sei, mas provavelmente pode ser falsificado por meio de um uso inteligente de NullField (Field.FOCUSABLE), que é quantas costume BlackBerry UIs implementar forçado comportamento foco .

Uma abordagem seria para derivar cada "item da lista" de uma classe que entrelaça NullFields focusable com os conteúdos visíveis do item da lista em si - este seria essencialmente forçar o sistema de rolagem para "salto" em intervalos menores ao invés da grande intervalos ditada pelas divisões naturais entre os itens da lista, e teria o benefício lateral de não modificar o posicionamento visível do conteúdo do item da lista.

a menos que você deseja substituir as como as tintas ListField ou criar seu próprio invólucro, você sempre terá este problema, isso é porque cada linha é sempre visíveis na rolagem. Tente usar labelField vez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top