Aller au contenu

Hauteur d'écran incorrect ?


AoSiX

Recommended Posts

Bonjour,

je me lance doucement mais surement dans la programmation d'Appli android, et là en l'occurrence dans le 2D.

1st, je vous fourni mon code, qui se trouve dans une classe qui hérite de SurfaceView.

le constructeur, juste pour vos notifier d'ou viens _ecran

    public GamePanel(Context context, WindowManager windowManager) {
       super(context);
       _ecran = windowManager;
       getHolder().addCallback(this);
       _thread = new GameThread(getHolder(), this);
       setFocusable(true);
   }

et le OnDraw

    public void onDraw(Canvas canvas) {
       canvas.drawColor(Color.BLACK);

       Float ecranW = (float) _ecran.getDefaultDisplay().getWidth();
       Float ecranH = (float) _ecran.getDefaultDisplay().getHeight();
       Paint mpaint = new Paint(); 
       mpaint.setStyle(Style.STROKE);
       mpaint.setStrokeWidth(BORDER_SIZE);
       mpaint.setARGB(255, 80, 150, 30); 
       RectF rect = new RectF(0,0,ecranW,ecranH); 
       canvas.drawRect(rect, mpaint); 

       Paint tpaint = new Paint();
       tpaint.setColor(Color.RED);
       canvas.drawText(ecranH.toString(), 20, 20, tpaint);



   }

Vous l'aurez compris sans doute, mon but est d'avoir une bordure autour de mon application. Mais là, pour la voire en bas de l'écran, je suis olbigé de faire ecranH -=25;

Est-ce normal ? et tant qu'on y est, est-ce la bonne méthode pour faire cela ? :p

Lien vers le commentaire
Partager sur d’autres sites

Non tu n'utilise malheureusement pas la bonne méthode. Il semble que tu n'es pas compris le principe des layout sous Android.

Pour faire ultra-simple (le mieux pour toi et de lire de la documentation sur le site d'Android), le système d'affichage sous Android se déroule en trois étapes :

  • - La mesure : Chaque vue demande à ses filles leur tailles et les contraignent si nécessaire
    - le positionnement : en fonction des tailles demandées par les filles, les vues positionnent leurs vues filles
    - le dessin : qui dessine à la position et la taille donnée par la vue parente

Dans ton cas, tu est dans la phase "dessin" puisque tu utilise la méthode "onDraw". Le seul hic c'est qu'en réalité la hauteur que tu recherche n'est pas celle de l'écran ... mais celle de ta vue elle-même. Il suffit d'utiliser getHeight() et getWidth() ... ça t'évitera au passage d'éviter la GROSSE bourde des -25 ... qui sont en fait -38 sur un Nexus One par exemple ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...