Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> Android canvas的save()和restore()用法

Android canvas的save()和restore()用法

編輯:中級開發

在讀android SDK裡面的samples裡面游戲的時候,很多時候都看到對canvas的save()和restore()運用。 

下面是個小程序,使用了這兩個方面,使得旋轉紅色方塊的時候,保證藍色方塊不受影響。 

Java代碼

  1. package com.ray.test;   
     
  2.    
     
  3. import android.app.Activity;   
     
  4. import android.content.Context;   
     
  5. import android.graphics.Canvas;   
     
  6. import android.graphics.Color;   
     
  7. import android.graphics.Paint;   
     
  8. import android.os.Bundle;   
     
  9. import android.vIEw.SurfaceHolder;   
     
  10. import android.view.SurfaceVIEw;   
     
  11.    
     
  12. public class Test extends Activity {   
     
  13.     /** Called when the activity is first created. */  
     
  14.     @Override  
     
  15.     public void onCreate(Bundle savedInstanceState) {   
     
  16.         super.onCreate(savedInstanceState);   
     
  17.         setContentView(new MyVIEw(this));   
     
  18.     }   
     
  19.         
     
  20.     class MyView extends SurfaceVIEw implements SurfaceHolder.Callback{   
     
  21.    
     
  22.         private SurfaceHolder mHolder;   
     
  23.         private Canvas canvas;   
     
  24.         public MyVIEw(Context context) {   
     
  25.             super(context);   
     
  26.             mHolder = getHolder();   
     
  27.             mHolder.addCallback(this);   
     
  28.         }   
     
  29.             
     
  30.         @Override  
     
  31.         public void surfaceChanged(SurfaceHolder holder, int format, int width,   
     
  32.                 int height) {   
     
  33.                 
     
  34.         }   
     
  35.    
     
  36.         @Override  
     
  37.         public void surfaceCreated(SurfaceHolder holder) {   
     
  38.             canvas = mHolder.lockCanvas();   
     
  39.             Paint mPaint = new Paint();   
     
  40.             mPaint.setColor(Color.BLUE);   
     
  41.             canvas.drawRect(100, 200, 200, 300, mPaint);   
     
  42.                 
     
  43.             canvas.save();   
     
  44.             canvas.rotate(45);   
     
  45.             mPaint.setColor(Color.RED);   
     
  46.             canvas.drawRect(150, 10, 200, 60, mPaint);   
     
  47.             canvas.restore();   
     
  48.             mHolder.unlockCanvasAndPost(canvas);   
     
  49.         }   
     
  50.    
     
  51.         @Override  
     
  52.         public void surfaceDestroyed(SurfaceHolder holder) {   
     
  53.             // TODO Auto-generated method stub   
     
  54.                 
     
  55.         }   
     
  56.             
     
  57.     }   
     
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved