2011-02-23 89 views
3

我想將20x20背景平鋪到我的自定義視圖上,但出於某種原因我無法工作。Android:BitmapDrawable.Draw(Canvas)似乎並不工作

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

有沒有人有一個想法,爲什麼它不工作?

回答

2

你忘了給你可繪製的範圍。在繪製之前,您至少需要調用drawable.setBounds()一次。

+0

如果我希望圖像平鋪在整個屏幕上,我應該設置什麼界限?設置爲(0,0,20,20)給了我同樣的問題,它不會出現。 – Peter 2011-02-23 08:55:45

6

不要將邊界設置爲平鋪的大小:將它們設置爲要平鋪的總平面。你的情況:

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

我似乎已經解決了這個問題,下面的代碼

//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); 

但我現在有我自己的問題。什麼都不能畫到畫布上?