2017-09-27 4 views
-1

J'essaie de faire une application Android QT simple, mais fondamentalement, mon problème est que sur mon écran principal, j'ai environ 250 petites images que je veux faire défiler. Mais j'ai vraiment besoin que le défilement soit fluide et rapide. D'abord je l'ai essayé en utilisant QML mais ce n'était pas vraiment rapide, puis j'ai essayé de faire l'application dans Qt designer et d'utiliser des widgets mais c'était très lent. Ensuite, j'ai essayé d'utiliser OpenGL mais sur Android, je ne peux utiliser OpenGL ES et je ne peux pas trouver autant d'exemples parce que chaque exemple que je trouve est beaucoup plus avancé que j'ai besoin. Mais fondamentalement, ma question principale est, quelle est selon vous la meilleure façon de résoudre mon problème et si son openGL est la meilleure façon de l'utiliser?Comment résoudre le défilement lent dans l'application Android QT

Merci.

Répondre

0

Aucune des approches ne devrait rencontrer de problème lors du défilement par rapport à une application native sur le même périphérique. Vérifiez les éléments suivants:

  1. Assurez-vous de mesurer les performances uniquement dans les versions de version, le débogage QML étant désactivé et aucun débogueur n'étant connecté.
  2. Peut-être que votre appareil ne peut tout simplement pas suivre autant d'images dans une vue - alors ce n'est pas un problème Qt. Comparez avec un Java-App «natif» pour voir si c'est le cas.
  3. Vérifiez si vous avez tout implémenté correctement; par exemple. vérifier s'il y a quoi que ce soit en cours d'exécution dans votre boucle principale ou certains événements happenening à plusieurs reprises qui consomme du temps CPU

Et certains conseils plus généraux:

  1. Downscale vos images à la vue la taille appropriée avant de les donner à l'interface utilisateur, car ils peuvent devoir être redimensionnés à chaque mise à jour d'image et/ou consommer de la mémoire graphique dans le cas contraire. Par exemple. Ne réglez pas la source sur une image 1024x1024 lorsque celle-ci s'affiche dans une vue 64x64
  2. Supprimez la transparence des images si elles doivent s'afficher sur un arrière-plan uni.
  3. superposition Dont les images avec d'autres widgets/contrôle
  4. Si vous obtenez toujours une interface utilisateur « lent », peut-être essayer de fusionner tout ou plusieurs images et leur interface utilisateur/contrôles associés en une ou plusieurs images plus grandes
  5. Les vues très longues ne sont pas conviviales. Peut-être implémenter un pager ou un onglet-vue, etc. pour diviser votre liste en plusieurs vues. De cette façon, vous pouvez également réduire le temps de chargement
  6. N'essayez pas d'implémenter une interface dans openGL vous-même. Il est peu probable que vous en fassiez un meilleur que ce que vous avez déjà obtenu avec QtWidgets et QtQuick.
+0

Merci pour la réponse, mais ... je teste toujours dans la version builds, je l'ai essayé sur plusieurs appareils, même sur ios mais son pas parfait partout. Ma mise en œuvre est correcte à 100%. La plupart du temps je teste le défilement dans mon programme de côté seulement pour ce problème, donc il n'y a rien d'autre que l'écran avec des images. Ils sont vraiment downscaled et ils ont vraiment la taille lente. La deuxième chose est que j'ai besoin d'utiliser les images comme des objets avec des étiquettes et l'utilisateur devrait être capable de cliquer dessus, donc ce ne sont pas seulement des images. Je suis vraiment désespéré maintenant: / – merlinko