具体的看一下博文:Android学习笔记进阶15之Shader渲染
package xiaosi.BitmapShader; import android.app.Activity; import android.os.Bundle; public class BitmapShaderActivity extends Activity { /** Called when the activity is first created. */ private BitmapShaders bitmapShaders = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); bitmapShaders = new BitmapShaders(this); setContentView(bitmapShaders); } }
BitmapShaders.java
package xiaosi.BitmapShader; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ComposeShader; import android.graphics.LinearGradient; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.RadialGradient; import android.graphics.Shader; import android.graphics.SweepGradient; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.OvalShape; import android.view.View; public class BitmapShaders extends View { private LinearGradient linearGradient = null; private ComposeShader composeShader = null; private SweepGradient sweepGradient = null; private RadialGradient radialGradient = null; private BitmapShader bitmapShader = null; private Bitmap bitmap = null; private Paint paint = null; private ShapeDrawable shapeDrawable = null; private int BitmapWidth = 0; private int BitmapHeight = 0; public BitmapShaders(Context context) { super(context); // 得到图像 bitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.v)) .getBitmap(); BitmapWidth = bitmap.getWidth(); BitmapHeight = bitmap.getHeight(); // 构造渲染器LinearGradient linearGradient = new LinearGradient(0, 0, 100, 100, new int[] { Color.RED, Color.GREEN, Color.BLUE, Color.WHITE }, null, Shader.TileMode.REPEAT); paint = new Paint(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); paint.setShader(linearGradient); canvas.drawRect(20, 50, 320, 156, paint); } }