標籤:
public class BitmapShader extends Shader
BitmapShader, Shader家族的 專門處理圖片渲染的
構造方法:
public BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY)
bitmap:原圖
tile直譯為 瓷磚,瓦片。這裡的TileMode 可看成是 鋪圖的模式。
tileX, tileY:x/y 方向鋪圖的模式
public enum TileMode { CLAMP (0), REPEAT (1), MIRROR (2); TileMode(int nativeInt) { this.nativeInt = nativeInt; } final int nativeInt;} CLAMP:如果超出原始bounds(即原圖的邊界),則重複邊緣上的color
REPEAT:重複bitmap
MIRROR:重複bitmap,與REPEAT不同的時,它是鏡像重複,即:反向重複
例:
public class BitmapShaderView extends View { private BitmapShader mBitmapShader; private ShapeDrawable mShapeDrawable; public BitmapShaderView(Context context, Bitmap bitmap) { super(context); mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); mShapeDrawable = new ShapeDrawable(new OvalShape()); mShapeDrawable.getPaint().setShader(mBitmapShader);// mShapeDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight()); //原圖大小 mShapeDrawable.setBounds(0, 0, bitmap.getWidth() * 2, bitmap.getHeight() * 2); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.CYAN); mShapeDrawable.draw(canvas); }} 在Activity中,setContentView(new BitmapShaderView(context, bitmap));
原圖
x和y 邊緣重複
改:mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.MIRROR, Shader.TileMode.REPEAT);
效果
x方向鏡像重複;y方向重複
改:mBitmapShader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.MIRROR);
效果:
x方向重複;y方向鏡像重複
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Android Shader渲染器:BitmapShader