Como alterar o índice no OptionSelector imediatamente (sem animação)? [fechadas]

16

No meu aplicativo, eu uso um OptionSelector para escolher em uma lista de estações de bicicleta. Eu também tenho um componente de mapa com marcadores para cada estação.

Quando eu clico em um marcador de lugar, ele também altera o OptionSelector para o índice da estação correspondente, já que isso é uma boa experiência de usuário.

O que não é bom O UX é como o OptionSelector responde a essa mudança de índice, que está se animando como se tivesse sido tocado pelo dedo do usuário. Em outras palavras, muito depois de o usuário ter tocado no marcador do mapa e recebido todas as informações necessárias, o OptionSelector ainda está "girando" para o índice da estação.

Aqui está um vídeo demonstrando esse comportamento: link

Eu gostaria que este OptionSelector apenas alterasse seu índice imediatamente, sem animação. Existe uma maneira de fazer isso?

Veja como faço atualmente as coisas. Estou mais do que feliz em ser corrigido se este for o caminho errado de fazer isso. Eu uso um WorkerScript (um thread QML, mais ou menos) para fazer chamadas de API. Quando este WorkerScript retorna, ele move o OptionSelector da seguinte forma:

WorkerScript {
    id: queryStationsWorker
    source: "../js/getstations.js"

    onMessage: {
        [...]

        // Move the OptionSelector to the corresponding station's index.
        stationSelector.selectedIndex = getLastStationIndex(lastStation.contents.stationName, stationsModel)

        /*
         * For the sake of clarity:
         *
         * getLastStationIndex() is a function which just returns an integer.
         * lastStation is a U1DB database used for state saving.
         * stationsModel is a model containing all of the stations.
         */
    }
}

Qualquer ajuda ou insight apreciado - aplausos!

    
por Aaron Hastings 08.12.2014 / 19:20

1 resposta

0

Você pode ver uma cópia do OptionSelector qml aqui ele usa o UbuntuNumberAnimation quando não é expandido. Não há nenhuma opção para desativá-lo e, se o recurso for necessário, você terá que corrigir o envio de dados e aguardar por novas versões da biblioteca.

Você pode fazer seu próprio widget de seleção aberto, remova a parte da animação e certifique-se de renomeá-la para usar em seu código. Eu recomendo esta rota.

    
por Martin Owens -doctormo- 03.06.2016 / 21:01