5/06/2012

ANDROID Canvas LinearGradient

最近寫起 Android apps 來, 以下是一些心得
廢話少說,來例子是最實際的 XD


以下是source code
public void draw(Canvas c, long time) {
  int width = c.getWidth(), height = c.getHeight();
  
  Paint paint = new Paint();
  paint.setColor(Color.GREEN);
  LinearGradient lgCLAMP = new LinearGradient(0, 0, 100, 200, Color.RED, Color.BLUE, Shader.TileMode.CLAMP);
  LinearGradient lgMIRROR = new LinearGradient(0, 0, 100, 200, Color.RED, Color.BLUE, Shader.TileMode.MIRROR);
  LinearGradient lgREPEAT = new LinearGradient(0, 0, 100, 200, Color.RED, Color.BLUE, Shader.TileMode.REPEAT);
  
  c.drawColor(Color.GRAY);
  
  // Separate the screen into four areas
  
  // Top-left area
  c.save();
  c.clipRect(0, 0, width / 2, height / 2);
  paint.setShader(lgCLAMP);
  c.drawPaint(paint);
  c.drawText("MODE: CLAMP", width / 4, height / 4 + 40 / 2, TEXT_PAINT);
  c.restore();
  
  // Top-right
  c.save();
  c.clipRect(width / 2, 0, width, height / 2);
  c.translate(width / 2, 0);
  paint.setShader(lgMIRROR);
  c.drawPaint(paint);
  c.drawText("MODE: MIRROR", width / 4, height / 4 + 40 / 2, TEXT_PAINT);
  c.restore();
  
  // Button-left
  c.save();
  c.clipRect(0, height / 2, width / 2, height);
  c.translate(0, height / 2);
  paint.setShader(lgREPEAT);
  c.drawPaint(paint);
  c.drawText("MODE: REPEAT", width / 4, height / 4 + 40 / 2, TEXT_PAINT);
  c.restore();
  
  // There is no button-right :)
}