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

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

  • 如何使任何视图绘制到canvas?
  • 在Android中调整Drawable大小
  • 如何清除canvas上的以前的绘图?
  • Canvas.drawLines显示不连贯的段
  • Android:寻找具有内部和外部半径的drawArc()方法
  • 如何在Android中使用双三次插值在canvas上绘制和缩放位图?
  • 如何在canvasandroid中设置validation?
  • 如何在Android上的ImageView中绘制一条线?
  • 你可以使用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上