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

时间:2011-02-23 11:31:54

标签: android bitmap draw

我正在尝试将20x20背景平铺到我的自定义视图中,但出于某种原因我也无法进行。

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

有没有人知道它为什么不起作用?

3 个答案:

答案 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的画布