位图重复+圆角 [英] Bitmap repeat + rounded corners
本文介绍了位图重复+圆角的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想创建圆角矩形和背景重复位图。我写这样的,但得到的位图的角落。
谁能帮帮忙?
background.xml
< XML版本=1.0编码=UTF-8&GT?;
<层列表的xmlns:机器人=http://schemas.android.com/apk/res/android>
<项目>
<形状>
<中风
机器人:宽=1DP
机器人:颜色=#FFFFFF/>
<边角机器人:半径=50dp/>
< /形状>
< /项目>
<项目>
<位图
机器人:SRC =@可绘制/ carbon_4
机器人:TILEMODE =重复/>
< /项目>
< /层列表>
解决方案
我发现的这个帖子通过罗曼盖伊这是一个更简单的方法,以圆润的边角上的瓷砖位图。这里的答案很简单:
类CurvedAndTiled扩展绘制对象{
私人最终浮动mCornerRadius;
私人最终RectF mRect =新RectF();
私人最终BitmapShader mBitmapShader;
私人最终涂料mTilePaint;
CurvedAndTiled(
点阵位图,
浮动cornerRadius){
mCornerRadius = cornerRadius;
mBitmapShader =新BitmapShader(位图,
Shader.TileMode.REPEAT,Shader.TileMode.REPEAT);
mTilePaint =新的油漆();
mTilePaint.setAntiAlias(真正的);
mTilePaint.setShader(mBitmapShader);
}
@覆盖
保护无效onBoundsChange(矩形边界){
super.onBoundsChange(边界);
mRect.set(0,0,bounds.width(),bounds.height());
}
@覆盖
公共无效画(油画画布){
canvas.drawRoundRect(mRect,mCornerRadius,mCornerRadius,mTilePaint);
}
@覆盖
公众诠释getOpacity(){
返回PixelFormat.TRANSLUCENT;
}
@覆盖
公共无效setAlpha(INT阿尔法){
mTilePaint.setAlpha(阿尔法);
}
@覆盖
公共无效setColorFilter(ColorFilter CF){
mTilePaint.setColorFilter(CF);
}
}
您只需设置你的观点的背景绘制是这些人之一,你的好去。
I am trying to create rectangle with rounded corners and background as repeated bitmaps. I am writing like this, but getting bitmaps in the corners.
Could anyone help out?
background.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<corners android:radius="50dp" />
</shape>
</item>
<item>
<bitmap
android:src="@drawable/carbon_4"
android:tileMode="repeat" />
</item>
</layer-list>
解决方案
I found this post by Romain Guy that's a much easier way to round corners on a tiled bitmap. Here's the short answer:
class CurvedAndTiled extends Drawable {
private final float mCornerRadius;
private final RectF mRect = new RectF();
private final BitmapShader mBitmapShader;
private final Paint mTilePaint;
CurvedAndTiled(
Bitmap bitmap,
float cornerRadius) {
mCornerRadius = cornerRadius;
mBitmapShader = new BitmapShader(bitmap,
Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
mTilePaint = new Paint();
mTilePaint.setAntiAlias(true);
mTilePaint.setShader(mBitmapShader);
}
@Override
protected void onBoundsChange(Rect bounds) {
super.onBoundsChange(bounds);
mRect.set(0, 0, bounds.width(), bounds.height());
}
@Override
public void draw(Canvas canvas) {
canvas.drawRoundRect(mRect, mCornerRadius, mCornerRadius, mTilePaint);
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
@Override
public void setAlpha(int alpha) {
mTilePaint.setAlpha(alpha);
}
@Override
public void setColorFilter(ColorFilter cf) {
mTilePaint.setColorFilter(cf);
}
}
You just set your view's background drawable to be one of these guys and your good to go.
这篇关于位图重复+圆角的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文