1. 程式人生 > >Android繪製空心矩形示例

Android繪製空心矩形示例

要繪圖,首先得調整畫筆,待畫筆調整好之後,再將影象繪製到畫布上,這樣才可以顯示在手機螢幕上。Android 中的畫筆是 Paint類,Paint 中包含了很多方法對其屬性進行設定,主要方法(沒有全部列出,大家可以檢視官方文件)如下: 
setAntiAlias: 設定畫筆的鋸齒效果。 
   setColor: 設定畫筆顏色 
   setARGB:  設定畫筆的a,r,p,g值。 
   setAlpha:  設定Alpha值 
   setTextSize: 設定字型尺寸。 
   setStyle:  設定畫筆風格,空心或者實心。 
   setStrokeWidth: 設定空心的邊框寬度。 
   getColor:  得到畫筆的顏色 
   getAlpha:  得到畫筆的Alpha值。

   下面是一個簡單的示例 來說明這些方法的使用。先來看看執行效果吧。 


GameView類 
Java程式碼  收藏程式碼
  1. package xiaohang.zhimeng;  
  2. import android.content.Context;  
  3. import android.graphics.Canvas;  
  4. import android.graphics.Color;  
  5. import android.graphics.Paint;  
  6. import android.util.Log;  
  7. import android.view.KeyEvent;  
  8. import android.view.MotionEvent;  
  9. import android.view.View;  
  10. public class GameView extends View implements Runnable {  
  11.     public final static String TAG = "Example_05_03_GameView";  
  12.     // 宣告Paint物件  
  13.     private Paint mPaint = null;  
  14.     public GameView(Context context) {  
  15.         super(context);  
  16.         // 構建物件  
  17.         mPaint = new
     Paint();  
  18.         // 開啟執行緒  
  19.         new Thread(this).start();  
  20.     }  
  21.     @Override  
  22.     protected void onDraw(Canvas canvas) {  
  23.         super.onDraw(canvas);  
  24.         // 設定Paint為無鋸齒  
  25.         mPaint.setAntiAlias(true);  
  26.         // 設定Paint的顏色  
  27.         mPaint.setColor(Color.RED);  
  28.         mPaint.setColor(Color.BLUE);  
  29.         mPaint.setColor(Color.YELLOW);  
  30.         mPaint.setColor(Color.GREEN);  
  31.         // 同樣是設定顏色  
  32.         mPaint.setColor(Color.rgb(25500));  
  33.         // 提取顏色  
  34.         Color.red(0xcccccc);  
  35.         Color.green(0xcccccc);  
  36.         // 設定paint的顏色和Alpha值(a,r,g,b)  
  37.         mPaint.setAlpha(220);  
  38.         // 這裡可以設定為另外一個paint物件  
  39.         // mPaint.set(new Paint());  
  40.         // 設定字型的尺寸  
  41.         mPaint.setTextSize(14);  
  42.         // 設定paint的風格為“空心”  
  43.         // 當然也可以設定為"實心"(Paint.Style.FILL)  
  44.         mPaint.setStyle(Paint.Style.STROKE);  
  45.         // 設定“空心”的外框的寬度  
  46.         mPaint.setStrokeWidth(5);  
  47.         // 得到Paint的一些屬性 顏色、Alpha值、外框的寬度、字型尺寸  
  48.         Log.i("TAG""paint Color------>" + mPaint.getColor());  
  49.         Log.i(TAG, "paint Alpha------->" + mPaint.getAlpha());  
  50.         Log.i("TAG""paint StrokeWidth--------->" + mPaint.getStrokeWidth());  
  51.         Log.i("TAG""paint TextSize----------->" + mPaint.getTextSize());  
  52.         // 繪製一空心個矩形  
  53.         canvas.drawRect((320 - 80), 20, (320 - 80) / 2 + 8020 + 40, mPaint);  
  54.         // 設定風格為實心  
  55.         mPaint.setStyle(Paint.Style.FILL);  
  56.         mPaint.setColor(Color.GREEN);  
  57.         // 繪製綠色實心矩形  
  58.         canvas.drawRect(0204020 + 40, mPaint);  
  59.     }  
  60.     // 觸筆事件  
  61.     public boolean onTouchEvent(MotionEvent event) {  
  62.         return true;  
  63.     }  
  64.     // 按鍵按下事件  
  65.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
  66.         return true;  
  67.     }  
  68.     // 按鍵彈起事件  
  69.     public boolean onKeyUp(int keyCode, KeyEvent event) {  
  70.         return true;  
  71.     }  
  72.     public boolean onKeyMultiple(int KeyCode, int repeatCount, KeyEvent event) {  
  73.         return true;  
  74.     }  
  75.     @Override  
  76.     public void run() {  
  77.         while (!Thread.currentThread().isInterrupted()) {  
  78.             try {  
  79.                 Thread.sleep(100);  
  80.             } catch (Exception e) {  
  81.                 Thread.currentThread().interrupt();  
  82.             }  
  83.             // 更新介面  
  84.             postInvalidate();  
  85.         }  
  86.     }  
  87. }  


Activity01類 
Java程式碼  收藏程式碼
  1. package xiaohang.zhimeng;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. public class Activity01 extends Activity {  
  5.     /** Called when the activity is first created. */  
  6.     private GameView mGameView;  
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.main);  
  11.         mGameView = new GameView(this);  
  12.         setContentView(mGameView);  
  13.     }  
  14. }