我正在尝试将20x20背景平铺到我的自定义视图中,但出于某种原因我也无法进行。
BitmapDrawable background;
background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.back));
background.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
background.draw(canvas);
有没有人知道它为什么不起作用?
答案 0 :(得分:13)
您可以使用BitmapDrawable,但您必须先设置边界,以便知道要进行多少平铺:
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);
答案 1 :(得分:0)
您可能在日志中收到有关SKImageDecoder失败的警告。如果您是通过xml创建资源,则需要通过(BitmapDrawable) getResources().getdrawable(id)
答案 2 :(得分:-1)
你倒退了。不是将View的画布传递给位图的draw方法,而是使用Canvas.drawBitmap将Bitmap绘制到View的画布