Déploiement Android SurfaceView

J'écris une application Android qui génère un bitmap hors écran qui est (par exemple) 640 * 480 pixels et affiche que dans une SurfaceView. Notez que la taille de l'image est plus grande que l'affichage réel sur le combiné.

La façon dont l'application fonctionne est qu'elle affiche d'abord le coin supérieur gauche (0,0) de l'image, puis j'aimerais pouvoir faire défiler l'image.

  • Android Proguard saute un pot externe
  • Comment passer l'image par défaut à l'activité précédente si aucune image n'est sélectionnée
  • Supprimer la marge dans l'icône de la barre d'outils Android
  • ERREUR: l'application requiert la version de l'API 14. La version de l'API du périphérique est 13 (Android 3.2.1)
  • Comment puis-je créer une cellule dans un ListView dans Android pour développer et contracter verticalement quand il est touché?
  • Envoyer un courrier électronique avec un objet bitmap en pièce jointe dans Android?
  • Ma classe Surfaceview implémente le rappel de démarrage et renvoie une taille de 1024 * 768 qui affiche la zone de l'image qui correspond à l'écran du téléphone. Je voudrais mettre en place un support pour le défilement que je trouve presque impossible en raison de la documentation très limitée (juste des grappes de classes et d'appels sans cohérence). J'ai essayé d'appeler scrollBy et cela ne fonctionne pas.

    Si quelqu'un a des indications sur la façon de procéder, cela serait très apprécié.

  • Android - La barre de classement personnalisée ressemble à son saignement
  • Le widget Android n'apparaît pas sur la liste après son développement
  • ViewPager.setOffscreenPageLimit (0) ne fonctionne pas comme prévu
  • Impossible de recevoir des messages utilisant Google Cloud Messaging pour Android (pas la bibliothèque auxiliaire)
  • Comment télécharger le fichier dans Android en utilisant la bibliothèque Retrofit?
  • Désactiver la notification Android en cours via le bouton Action sans ouvrir la demande
  • 2 Solutions collect form web for “Déploiement Android SurfaceView”

    Une fois que vous commencez à utiliser un SurfaceView, vous vous déplacez dans un monde où vous avez une zone vide de pixels, et vous êtes seul pour les dessiner comme vous le souhaitez. Vous faites tout vous-même – et cela signifie que vous devez implémenter le défilement vous-même. Ce n'est pas trivial, mais ce n'est pas trop difficile.

    L'une des façons de le faire est la suivante: – Extension de SurfaceView et implémentation de SurfaceHolder.Callback – Utilisez getHolder (). AddCallback (ceci) pour récupérer le rappel – Utilisez les événements OnTouch pour implémenter le comportement de défilement (c.-à-d. Lors de la réponse, retirez le x , Position y du MotionEvent et paramétrer le décalage de manière appropriée).

    Implémentez un thread pour gérer la mise à jour de l'image. Il y a des exemples de ceci sur le Web (désolé – il n'en a rien à faire maintenant).

    Sinon, utilisez un bitmap hors écran et faites-le dessiner par un ImageView normal (taillez l'ImageView sur la taille du bitmap et placez-le dans une vue de défilement).


    Modifier:

    En voyant que cela consisterait à obtenir des vues, il serait intéressant de souligner que depuis cette fois, j'ai mis en œuvre et publié en tant que source ouverte une petite bibliothèque qui implémente un cadre pour la fonctionnalité ci-dessus (inspiré de nombreux commentaires ici sur SO, parmi autres). On le trouve sur Github: https://github.com/micabyte/android_game

    Je viens de résoudre cela pour mon propre jeu, ma surfaceView est une adaptation de l'exemple de LunarLander par Google.

    Tout est pareil, sauf que je dessine sur mon propre Bitmap privé avec mon propre Canvas privé dans la méthode DoDraw, puis en copier un peu sur le canevas que je donne en utilisant le code ci-dessous.

    Rect src = new Rect(mScrollX, mScrollY, mScrollX+mSurfaceWidth, mScrollY+mSurfaceHeight); Rect dst = new Rect(0, 0, mSurfaceWidth, mSurfaceHeight); surfaceCanvas.drawBitmap (mLevelBitmap, src, dst, null); 

    Les objets Rect définissent comment drawBitmap évalue / transforme les pixels de Bitmap source (mon bitmap privé) vers la destination (le Canvas J'ai été donné pour dessiner dans doDraw ()

    MScrollX et Y sont le coin supérieur gauche du rectangle qui sera affiché (par rapport au grand bitmap privé)

    MSurfaceWidth / Height est la taille du rectangle qui sera affiché

    Assurez-vous simplement que les valeurs de défilement se situent dans des plages acceptables [0, privateBitmapWidth-mSurfaceWidth]

    Mettez à jour les valeurs de défilement vous-même comme vous le souhaitez, (dans onTouchEvent () par exemple)

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.