Mon application utilise Standard Android Translateanimation pour faire glisser les vues dans et hors de l'écran. Malheureusement, la mise en page semble être assez lourde: imageview, tas de vues de texte et une galerie avec du texte et des images. Il y a deux points de vue animés - un qui glisse, et un autre qui glisse dans. P>
Le problème est dans la faible performance de ces animations, en particulier sur les appareils avec la CPU moins puissante. Les animations n'ont pas l'air suffisamment lisse. P>
Je pense à éliminer les transparlateanimations et à essayer de capturer le contenu de la vue dans un bitmap et de les déplacer comme imageviews. P>
Avez-vous des idées comment de telles tâches doivent être effectuées correctement et si l'approche de déménagement d'image aidera? P>
P.s. P>
Je pense que je peux utiliser des animations de mauvaise manière. J'ai deux vues sur le Framelayout. On est visible, l'autre n'est pas. Ensuite, je gère des événements tactiles et appliquez les translatianimations aux deux vues (sur Action_Move) car l'utilisateur déplace le doigt le long de l'écran. Cela semble donc que l'utilisateur déplace une vue hors de l'écran tout en tirant un autre sur le côté de l'écran. Cela fonctionne bien pour des mises en page légères. P>
5 Réponses :
Vous devez activer le cache de dessin sur les vues animées. Regardez la documentation de la vue.setDrawingCacheenabled (Boolean). P>
J'ai déjà essayé que `View1 = (WeatherinfoView) Findviewide (r.id.cell1); View2 = (WeatherinfoView) FOYVISHYID (R.ID.Cell2); View3 = (WeatherinfoView) FOYVISHYID (R.ID.Cell3); View1.SetDrawingCacheenabled (True); View2.SetDrawingCacheenabled (True); View3SeDeDrawingCacheenabled (true); `Malheureusement, je ne peux voir aucune différence avec le cache de dessin activé
Vous devez essayer d'utiliser View Flipper. C'est très simple d'inclure votre point de vue dedans et utilisez des fichiers d'animation pour exécuter de nombreuses animations. Ce lien pourrait être utile: p>
Ce n'est pas exactement ce que je veux. Pour autant que je sois bien compris, ViewFlipper ne permet pas de «interactive» de la glisse. Dans mon application, la vue suivie du doigt que l'utilisateur glisse les vues.
Je ne vois pas non plus pourquoi le ViewFlipper devrait être plus rapide que les transparlateanimations +
Une autre solution serait de rendre votre point de vue sur des surfaces 3D et d'animer ces via OpenGL. C'est ainsi que Sony fait toutes leurs animations de nifty comme indiqué par ex. Dans leur application TimeCape. P>
Il y a Un publication d'un blog à ce sujet. p>
PS: Je suppose que cela n'est vraiment pas rapide lorsqu'il est exécuté sur le GPU, ce qui est le cas sur les périphériques Xperia. Je ne sais pas si les téléphones androides plus âgés le feraient dans des logiciels, auquel cas il est probablement encore plus lent. Néanmoins, on peut valoir la peine d'enquêter, il semble assez simple.
Enfin, j'ai réussi à mettre en œuvre les comportements requis à l'aide de la vue personnalisée de la galerie. Cela fonctionne parfaitement. P>
Même meilleure solution consiste à utiliser un commutateur d'affichage en fonction du code source de l'application Launcher Android. Marcreichelt.blogspot.com/2010/09/... < / a>
Lorsque vous réagissez aux événements tactiles, vous avez probablement instancier de nouvelles translations dans votre méthode d'Aongouch qui est tirée très souvent. Créer massivement de nouvelles instances entraîner une collection massive des ordures. P>
2 Solutions: P>
Implémentez votre propre statictranslateanimation et évitez de l'instantimer à chaque événement de déplacement (par exemple, SetTranslation (int x, int.)). Inversez: cette approche ne m'a fonctionné que pour une seule animation. L'animation de deux objets à un moment a été à nouveau à nouveau dans la collecte des ordures, bien qu'aucun objet n'était instancié (dans mon code) pendant la manipulation des événements. P> li>
Utilisez offsetlefTAndright (int Offset) et offsettopandbottom (int Offset) au lieu d'animations Sorcière effectue beaucoup mieux sur les appareils anciens et android 2.x et évite complètement la collection de déchets. P> Li> ol>