安卓:BitmapDrawable.Draw(Canvas)似乎不能正常工作

3
我正在尝试将一个20x20的背景图瓷贴到我的自定义视图中,但是出现了一些问题,我无法实现。
    BitmapDrawable background;
    background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.back));
    background.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
    background.draw(canvas);

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

3个回答

6

不要将边界设置为瓷砖的大小:将它们设置为需要铺设的总面积。在您的情况下:

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

2

你忘记了为你的可绘制对象设置范围。在绘制之前,你需要至少调用一次drawable.setBounds()。


如果我想让图像在整个屏幕上平铺,我应该设置什么边界?将其设置为(0,0,20,20)会导致相同的问题,它不会出现。 - Peter

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

但是我现在有自己的问题。无法在画布上绘制任何东西?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接