Android 平铺位图
我正在尝试在 Android 中加载一个我想要平铺的位图。我目前在视图中使用以下内容来显示位图:
canvas.drawBitmap(bitmap, srcRect, destRect, null)
我本质上想在我的应用程序中使用此位图作为背景图像,并且希望在 X 和 Y 方向上重复该位图。
我已经看到了 BitmapShader 类的 TileMode.REPEAT 常量,但我不确定这是否用于重复实际位图或用于对位图应用过滤器。
I'm trying to load a bitmap in Android which I want to tile. I'm currently using the following in my view to display a bitmap:
canvas.drawBitmap(bitmap, srcRect, destRect, null)
I essentially want to use this bitmap as a background image in my app and would like to repeat the bitmap in both the X and Y directions.
I've seen the TileMode.REPEAT constant for the BitmapShader
class but i am not sure if this is to be used for repeating the actual bitmap or is used for applying a filter to the bitmap.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
您可以在 xml 而不是 java 代码中执行此操作。我自己没有尝试过,但我确实找到了这个例子。
然后在一个名为 backrepeat.xml
reference
You would do this in the xml instead of the java code. I haven't attempted this myself but I did find this example.
then in an xml called backrepeat.xml
reference
找出代码版本:
然后,如果您有一个可绘制的平铺,则可以使用它来制作 BitmapDrawable:
Figured out the code version:
Then if you have a drawable to tile, this can be used instead to make the BitmapDrawable:
上面的 backrepeat.xml 有问题
The backrepeat.xml above is buggy
似乎有些人有兴趣在 View 的 onDraw 方法中执行此操作。以下代码对我有用:
It seems that some people are interested in doing this in a View, at the onDraw method. The following code has worked for me:
这对我来说效果很好。我不必单独创建位图。我在布局中使用了tileMode 属性。
This worked fine for me. I did not have to create the bitmap seperately. I used the tileMode attribute in the layout.
只需将这行代码放在 onCreate() 中即可:-
Just put this line of codes in the onCreate():-
如果您只想垂直重复背景,您可以将布局的宽度设置为“wrap_content”,而如果您想将背景设置为水平重复,则将高度设置为“wrap_content”。如果高度和宽度都设置为“fill_parent”,那么它将沿 X 和 Y 方向平铺。
例如,以下代码将垂直重复您的背景:
If you want to repeat the background only vertically you can set the width of your layout to "wrap_content", whereas if you want to set the background to repeat horizontally set the height to "wrap_content". If both height and width are set to "fill_parent" then it will tile in the X and Y directions.
For example, the following code will repeat your background vertically: