2011-02-23 6 views
3

J'essaie de mosaïquer un arrière-plan 20x20 sur mon affichage personnalisé, mais pour une raison que je suis incapable aussi.Android: BitmapDrawable.Draw (Canvas) ne semble pas fonctionner

BitmapDrawable background; 
    background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.back)); 
    background.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); 
    background.draw(canvas); 

Quelqu'un at-il une idée de pourquoi cela ne fonctionne pas?

Répondre

2

Vous avez oublié de donner vos limites tirables. Vous devez appeler drawable.setBounds() au moins une fois avant de le dessiner.

+0

Quelles limites dois-je définir si je veux que l'image soit carrelée sur tout l'écran? Mettre à (0, 0, 20, 20) me donne le même problème, il n'apparaît pas. – Peter

6

Ne définissez pas les limites de la taille de la dalle: définissez-les sur la surface totale à carreler. Dans votre cas:

background.setBounds(0, 0, myView.getWidth(), myView.getHeight()); 
1

Il me semble avoir résolu ce problème avec le code suivant

//background 
    Bitmap _back_bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.background); 
    BitmapDrawable backTiled = new BitmapDrawable(_back_bmp); 
    backTiled.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); 
    backTiled.setBounds(0, 0, this.getWidth(), this.getHeight()); 
    this.back_bmp = backTiled.getTileModeX(); 
    this.setBackgroundDrawable(backTiled); 

Mais j'ai mon propre problème maintenant. Rien ne peut être dessiné sur la toile?