Android Shader渲染效果的使用

package com.Aina.Android;

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;

/**
 * com.Aina.Android Pro_Shader
 * 
 * @author Aina.huang E-mail: [email protected]
 * @version 创建时间:2010 Jun 17, 2010 9:59:49 AM 类说明
 */
public class GameView extends View {

	private Paint mPaint = null;
	private Shader mBitmapShader = null;
	private Shader mLinearGradient = null;
	private Shader mRadialGradient = null;
	private Shader mSweepGradient = null;
	private Shader mComposeShader = null;
	private Bitmap mBitmap = null;
	private int imgwidth = 0;
	private int imgheight = 0;
	private ShapeDrawable mShapeDrawable = null;

	public GameView(Context context) {
		super(context);
		mPaint = new Paint();
		mBitmap = ((BitmapDrawable) this.getResources().getDrawable(
				R.drawable.img)).getBitmap();// 获得资源
		imgwidth = mBitmap.getWidth();
		imgheight = mBitmap.getHeight();
		mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP,
				Shader.TileMode.MIRROR);
		mLinearGradient = new LinearGradient(0, 0, 100, 100, new int[] {
				Color.RED, Color.BLUE, Color.GREEN, Color.WHITE }, null,
				Shader.TileMode.MIRROR);
		mRadialGradient = new RadialGradient(100, 100, 50, new int[] {
				Color.BLUE, Color.GREEN, Color.RED, Color.WHITE }, null,
				Shader.TileMode.REPEAT);
		mSweepGradient = new SweepGradient(50, 50, new int[] { Color.RED,
				Color.GREEN, Color.BLUE, Color.WHITE }, null);
		mComposeShader = new ComposeShader(mBitmapShader, mLinearGradient,
				PorterDuff.Mode.DARKEN);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		mPaint.setAntiAlias(true);
		// mPaint.setShader(mBitmapShader);
		// canvas.drawBitmap(mBitmap, 10, 10, mPaint);

		// mShapeDrawable = new ShapeDrawable(new OvalShape());
		// Paint paint = mShapeDrawable.getPaint();
		// paint.setAntiAlias(true);
		// paint.setShader(mBitmapShader);
		// mShapeDrawable.setBounds(10, 10, imgwidth, imgheight);
		// mShapeDrawable.draw(canvas);

		// mPaint.setShader(mLinearGradient);
		// canvas.drawRect(0, 0, 100, 100, mPaint);

		// mPaint.setShader(mRadialGradient);
		// canvas.drawCircle(100, 100, 50, mPaint);

		// mPaint.setShader(mSweepGradient);
		// canvas.drawRect(0, 0, 100, 100, mPaint);
		mPaint.setShader(mComposeShader);
		canvas.drawRect(0, 0, imgwidth, imgheight, mPaint);
	}

}



package com.Aina.Android;

import android.app.Activity;
import android.os.Bundle;

public class Test_Shader extends Activity {
    /** Called when the activity is first created. */
	private GameView gv = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        gv = new GameView(this);
        setContentView(gv);
    }
}

你可能感兴趣的:(android,qq,OS)