2009-12-07 7 views
1

Je dessine par programme l'image d'arrière-plan (taille 320 * 480) pour l'écran d'accueil de mon application comme ci-dessous. La fonction de barre de défilement de l'écran est ajoutée. Aussi l'écran a beaucoup d'autres contrôles comme Label, EditField etc. dans plusieurs gestionnaires horizontaux. Mon problème est que, lorsque je fais défiler l'écran, l'image d'arrière-plan n'occupe pas la partie défilée ci-dessous, mais que je vois un fond blanc normal. Ça n'a pas l'air bien. Donc, je veux savoir comment puis-je placer l'image de fond même lorsque l'écran défile vers le bas?Blackberry - Problème avec l'image d'arrière-plan lorsque vous faites défiler l'écran

public MyHomescreen() 
    {  
     super(); 
     LabelField appTitle = new LabelField ("MyApp Title"); 
     setTitle(appTitle); 

     background = Bitmap.getBitmapResource ("HomeScreen.png"); 

     _container = new VerticalFieldManager(Manager.VERTICAL_SCROLL 
      | Manager.VERTICAL_SCROLLBAR) { 
     protected void paint(Graphics g) 
     { 

      int y = MyHomescreen.this.getMainManager().getVerticalScroll(); 
      g.clear(); 
      g.drawBitmap(0, 0, background.getWidth(), 
       background.getHeight(), background, 0, 0); 

      super.paint(g); 
     } 
     protected void sublayout(int maxWidth, int maxHeight) 
     { 
      int width = background.getWidth(); 
      int height = background.getHeight();   
      super.sublayout(width, height); 
      setExtent(width, height); 
     } 

     }; 
     mainVerticalManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL 
      | Manager.VERTICAL_SCROLLBAR) 
     { 
      protected void sublayout(int maxWidth, int maxHeight) 
      { 
       int width = background.getWidth(); 
       int height = background.getHeight();   
       super.sublayout(width, height); 
       setExtent(width, height); 
      } 
     }; 
     // code to add manager into the screen etc.. 
} 
+0

Avez-vous essayé d'utiliser l'image de grande taille? essayez d'utiliser la longueur de l'image est de la longueur de la forme ... il peut résoudre votre problème ... –

Répondre

0

Malheureusement, vous ne pouvez pas obtenir une image pour se repositionner automatiquement pour vous. Vous devez redessiner l'image une fois que vous avez passé la fin de votre image.

Nous avons eu ce même problème et nous avons essayé de redessiner l'arrière-plan, mais un problème que nous avons continué à rencontrer était le positionnement des éléments de l'interface graphique sur l'arrière-plan toujours changeant. (Si vous avez une étiquette avec du texte blanc, cela peut sembler bien pour commencer, mais lorsque vous faites défiler et que l'arrière-plan se déplace aussi, il peut recouvrir une partie blanche de votre arrière-plan, ou d'autres problèmes similaires). Nous avons décidé de ne pas avoir d'écrans de défilement et de garder l'interface simple et avoir des boutons qui lancent d'autres écrans avec plus d'éléments. De cette façon, ils ne sont pas tous sur un écran avec un utilisateur ayant à faire défiler beaucoup, et il résout le problème d'image d'arrière-plan

2

Jetez un oeil à this forum post pour un code sur la façon de le faire en utilisant deux VerticalFieldManagers imbriqués.

+0

Bonjour, Ce lien contenant le code ne m'a pas résolu le problème du tout. En fait, ce code ne fait rien pour mes besoins. Après avoir ajouté ce code, observé à partir du résultat est qu'il ne crée pas de barre de défilement pour l'écran, c'est tout. Je veux avoir une barre de défilement ainsi que vouloir étirer l'image d'arrière-plan même lorsque le défilement est en cours (ou) certains contrôles particuliers (ListField etc) sont sélectionnés. Le résultat final que je veux est, ne veux pas voir n'importe quel patch de fond blanc n'importe où dans l'écran quand il y a une certaine image d'arrière-plan constante placée. – Getsy

+0

Juste un pas, je travaille pour le dispositif BB Storm. – Getsy

+0

Oh - donc vous voulez "coller" votre image, pas seulement l'avoir comme arrière-plan statique? –

0

J'ai résolu cette fois. Je ne suis pas sûr des détails.
Si la mémoire sert, j'ai soit fait l'une des deux choses: A) définir l'arrière-plan sur le MainScreen, parent un gestionnaire à l'écran principal et rendre ses champs et l'arrière-plan translucide; qui a exigé une dérogation de peinture. En substance, vous définissez l'opacité et dessinez l'image. Laissez le haut à la HFM/VFM pour dessiner par dessus.
B) dessinez sur le dessus du HFM/VFM mais réglez l'opacité de façon à afficher principalement les champs de mise au point ...

0

Une autre possibilité consiste à définir une image de fond qui a un très grand défilement vertical. Ainsi, lorsque l'utilisateur fait défiler vers le bas, l'utilisateur voit le bas de l'image.

Questions connexes