2015/10/31

Android SurfaceView透過Canvas繪製 實心/空心矩形

Code:
public class Test extends Activity {
 //SurfaceView
 private SurfaceView surfaceViewRect;

 //Holder
 private SurfaceHolder surfaceHolderRect;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_test);
  
  //初始化
  surfaceViewRect = (SurfaceView) findViewById(R.id.surfaceViewRect);
  surfaceHolderRect = surfaceViewRect.getHolder();
  surfaceHolderRect.addCallback(callbackRectangle);
  surfaceHolderRect.setFormat(PixelFormat.TRANSPARENT);
  surfaceHolderRect.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 }


 private SurfaceHolder.Callback callbackRectangle = new Callback() {
  @Override
  public void surfaceDestroyed(SurfaceHolder holder) {

  }

  @Override
  public void surfaceCreated(SurfaceHolder holder) {
   //Canvas
   Canvas canvas = holder.lockCanvas();

   //背景為透明
   canvas.drawColor(Color.TRANSPARENT);

   //畫筆
   Paint paint = new Paint();
   //實心=Paint.Style.FILL
   //空心
   paint.setStyle(Paint.Style.STROKE);

   //畫筆顏色
   paint.setColor(Color.BLUE);

   //繪製矩形
   //left=開始x
   //top=開始y
   //right=結束x
   //bottom=結束y
   //以下方例子來說開始的位置在於(20,20) 結束地方在於(100-20,100-20)
   //也就是說這個矩形長寬為80
   canvas.drawRect(20, 20, 100, 100, paint);
   holder.unlockCanvasAndPost(canvas);
  }

  @Override
  public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
   // TODO Auto-generated method stub

  }
 };
}