2012年5月21日 星期一

[Android]利用 Paint 指令繪製 Android 機器人


<DrawAndroid.java>
   1: package com.android.drawandroid;
   2:  
   3: import android.app.Activity;
   4: import android.os.Bundle;
   5: import android.view.Window;
   6: import android.view.WindowManager;
   7:  
   8: public class DrawAndroid extends Activity {
   9:  
  10:     private DrawAndroidView drawAndroidView = null;
  11:   
  12:     @Override
  13:     public void onCreate(Bundle  savedInstanceState) { 
  14:         super.onCreate(savedInstanceState);
  15:         
  16:         // 移除應用程式的標題
  17:         requestWindowFeature(Window.FEATURE_NO_TITLE);
  18:         
  19:         // 設定視窗屬性為全螢幕
  20:         getWindow().setFlags(    WindowManager.LayoutParams.FLAG_FULLSCREEN,
  21:                                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
  22:         
  23:         drawAndroidView = new DrawAndroidView(this);
  24:         
  25:         setContentView(drawAndroidView);
  26:     }
  27: }

<DrawAndroidView.java>


自定義字體下載點: DroidLogo-Bold.ttf 


   1: package com.android.drawandroid;
   2:  
   3: import android.content.Context;
   4: import android.graphics.Canvas;
   5: import android.graphics.Color;
   6: import android.graphics.Paint;
   7: import android.graphics.RectF;
   8: import android.graphics.Typeface;
   9: import android.view.View;
  10:  
  11: public class DrawAndroidView extends View {
  12:     
  13:     Typeface font;
  14:     Paint paint, paint_eye;
  15:       
  16:     public DrawAndroidView(Context context) {
  17:         super(context);
  18:     }
  19:  
  20:     public void  onDraw(Canvas canvas) {
  21:         super.onDraw(canvas);
  22:         DrawCircle(canvas);
  23:         DrawRect(canvas);
  24:         DrawLine(canvas);
  25:         DrawText(canvas);
  26:     }
  27:     
  28:     private void DrawCircle(Canvas canvas) {
  29:         // 畫頭
  30:         paint = new Paint();
  31:         // 設置為true可消除邊緣效果 
  32:         paint.setAntiAlias(true);
  33:         // 設定畫筆顏色
  34:         paint.setColor(Color.GREEN);
  35:         // 於畫布上繪製【頭部】    
  36:         RectF rectF = new RectF(70,40,250,180);
  37:         canvas.drawArc(rectF, 180, 180, true, paint);
  38:         
  39:         // 畫眼睛
  40:         paint_eye = new  Paint();
  41:         // 設置為true可消除邊緣效果 
  42:         paint_eye.setAntiAlias(true);
  43:         // 設定畫筆顏色
  44:         paint_eye.setColor(Color.WHITE);
  45:         // 於畫布上繪製【眼腈】
  46:         canvas.drawCircle(120, 77, 8, paint_eye);
  47:         canvas.drawCircle(200, 77, 8, paint_eye);
  48:     }
  49:     
  50:     private void DrawRect(Canvas canvas) {
  51:         paint = new Paint();
  52:         // 設置為true可消除邊緣效果 
  53:         paint.setAntiAlias(true);
  54:         // 設定畫筆顏色
  55:         paint.setColor(Color.GREEN);
  56:         // 設置矩形區域
  57:         RectF rectF1 = new RectF(20,105,60,280);    // 左手
  58:         RectF rectF2 = new RectF(260,105,300,280);    // 右手
  59:         RectF rectF3 = new RectF(70,120,250,350);    // 身體
  60:         RectF rectF4 = new RectF(100,320,140,430);    // 左腳
  61:         RectF rectF5 = new RectF(180,320,220,430);    // 右腳
  62:         // 於畫布上繪製圓角矩形
  63:         canvas.drawRoundRect(rectF1, 20, 20, paint);
  64:         canvas.drawRoundRect(rectF2, 20, 20, paint);
  65:         canvas.drawRoundRect(rectF3, 20, 20, paint);
  66:         canvas.drawRoundRect(rectF4, 20, 20, paint);
  67:         canvas.drawRoundRect(rectF5, 20, 20, paint);
  68:     }
  69:     
  70:     
  71:     private void DrawLine(Canvas canvas) {
  72:         paint = new Paint();
  73:         // 設置為true可消除邊緣效果 
  74:         paint.setAntiAlias(true);
  75:         // 設定畫筆顏色
  76:         paint.setColor(Color.GREEN);
  77:         // 設定畫筆的粗細
  78:         paint.setStrokeWidth(12);
  79:         // 於畫布上繪製【頭頂兩支角】
  80:         canvas.drawLine(70,28,100,63, paint);
  81:         canvas.drawLine(215,63,250,28, paint);
  82:     }
  83:     
  84:     private void DrawText(Canvas canvas) {
  85:         paint = new Paint();
  86:         // 讀取自定義字體
  87:         font = Typeface.createFromAsset(getContext().getAssets(),"fonts/DroidLogo-Bold.ttf");
  88:         // 設定字體
  89:         paint.setTypeface(font);
  90:         // 設置為true可消除邊緣效果 
  91:         paint.setAntiAlias(true);
  92:         // 設定畫筆顏色
  93:         paint.setColor(Color.WHITE);
  94:         // 設定字體大小
  95:         paint.setTextSize(30);
  96:         // 於畫布上繪製【ANDROID 文字】
  97:         canvas.drawText("ANDROID", 85, 230, paint);
  98:     }
  99: }

沒有留言:

張貼留言