309-圖片3D變形(行動裝置進階應用)

1. GAD03.java

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Camera;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;

public class GAD03 extends Activity {

    private Camera camera;
    private Bitmap myBmp;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        MyView myView = new MyView(this);
        setContentView(myView);

    }

    private class MyView extends View {

        boolean draw = false;
        float X = 0;
        float Y = 0;

        public MyView(Context context) {
            super(context);

            myBmp = BitmapFactory.decodeResource(this.getResources(),
                    R.drawable.droid);
        }

        @Override
        public void draw(Canvas canvas) {
            super.draw(canvas);
            if (draw) {
                camera = new Camera();
                camera.translate(0, 0, 0);
                camera.rotateX(20);
                camera.rotateY(20);
                Matrix matrix3d = new Matrix();
                camera.getMatrix(matrix3d);
                canvas.translate(0, 0);
                canvas.concat(matrix3d);
                canvas.drawBitmap(myBmp, X - 90, Y - 80, null); // 將bitmap繪在canvas上

            }
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                draw = true;
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                draw = false;
            }
            X = event.getX();
            Y = event.getY();
            this.invalidate();
            return true;
        }
    }
}

沒有留言: