Android:BitmapDrawable.Draw(Canvas)似乎不工作

我正在尝试将20×20背景平铺到我的自定义视图上,但出于某种原因我无法使用。

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

有没有人有一个想法,为什么它不工作?

Related of "Android:BitmapDrawable.Draw(Canvas)似乎不工作"

你可以使用BitmapDrawable,但是你必须首先设置边界,以便知道做多less平铺:

 BitmapDrawable background; background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(),R.drawable.back)); //in this case, you want to tile the entire view background.setBounds(0, 0, myView.getWidth(), myView.getHeight()); background.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); background.draw(canvas); 

您可能会在您的日志中得到关于SKImageDecoder失败的警告。 如果你正在通过xml创build资源,你需要通过(BitmapDrawable) getResources().getdrawable(id)来检索它(BitmapDrawable) getResources().getdrawable(id)

你有它倒退。 而不是将您的视图的canvas传递给位图的绘制方法,而是使用Canvas.drawBitmap将您的位图绘制到视图的canvas上