CanvasDemo -- 學員 F 的程式

Android

簡介

使用方法

開發工具

開始寫程式

視覺化介面

視覺元件

對話元件

核心物件

事件處理

資料儲存

查詢功能

影音功能

繪圖功能

網路功能

衛星地圖

特殊功能

資源管理

裝置管理

系統核心

問題與回答

刷機升級

常用軟體

Eclipse

教學錄影

訊息

相關網站

參考文獻

最新修改

簡體版

English

學員 F 的程式

package ccc.canvasDemo;
 
import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
 
public class canvasDemo extends Activity {
    SurfaceView SurfaceView01;
    SurfaceHolder surfaceHolder;
    Drawable img;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        img=getResources().getDrawable(R.drawable.android);
        Button button01=(Button)findViewById(R.id.Button01);
        button01.setOnClickListener(new View.OnClickListener() {            
            public void onClick(View arg0) {
                draw(drawAction.drawAndroid);
            }
        });
        Button button02=(Button)findViewById(R.id.Button02);
        button02.setOnClickListener(new View.OnClickListener() {            
            public void onClick(View arg0) {
                draw(drawAction.clear);                
            }
        });
        Button button03=(Button)findViewById(R.id.Button03);
        button03.setOnClickListener(new View.OnClickListener() {            
            public void onClick(View arg0) {
                finish();
            }
        });
 
        SurfaceView01=(SurfaceView)findViewById(R.id.SurfaceView01);
        surfaceHolder=SurfaceView01.getHolder();
        surfaceHolder.addCallback(new SurfaceHolder.Callback() {
 
            public void surfaceDestroyed(SurfaceHolder arg0) {
 
            }
 
            public void surfaceCreated(SurfaceHolder arg0) {                
                draw(drawAction.create);
            }
 
            public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
 
            }
        });
    }
 
    @Override
    protected void onResume() {
        super.onResume();
 
    }
    enum drawAction{create,drawAndroid,clear,}
    void draw(drawAction action){
        Canvas canvas = null;
        try {
            canvas = surfaceHolder.lockCanvas(null);
            synchronized (surfaceHolder) {
                switch(action){
                case create:
                    start(canvas);
                break;
                case drawAndroid:
                    drawAndroid(canvas);    
                break;
                case clear:
                    clear(canvas);    
                break;
                }
            }
        } finally {
             if (canvas != null) {
                 surfaceHolder.unlockCanvasAndPost(canvas);
            }
        }
    }
 
    void drawAndroid(Canvas canvas){
 
        Paint p=new Paint();
        p.setARGB(150,88,88,88);
        canvas.drawLine(0, 0, 128, 128, p);
        canvas.save();
        img.setBounds(64, 64, 128, 128);
        float angle=90;
        canvas.rotate(angle, img.getBounds().centerX(), img.getBounds().centerY());
        img.draw(canvas);
        canvas.restore();
    }
    void start(Canvas canvas){       
        img.setBounds(0, 0, 128, 128);
        img.draw(canvas);
    }
    void clear(Canvas canvas){
           Paint p=new Paint();
        p.setARGB(255,0,0,0);
        Rect rect=new Rect(0,0,SurfaceView01.getWidth(),SurfaceView01.getHeight());
        canvas.drawRect(rect, p);
    }
}

參考文獻

  1. 利用Handler来更新android的UI — http://rayleung.javaeye.com/blog/411860

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License