SurfaceView小例子

来源:互联网 发布:深圳市网络诈骗 编辑:程序博客网 时间:2024/05/16 10:06
public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //setContentView(R.layout.activity_main);      //  setContentView(new MySurface(this, 200,200));        setContentView(new sinview(this));     //   setContentView(new touchdraw(this));    }

显示一个小蓝方块

public class MyView extends SurfaceView implements SurfaceHolder.Callback    {        /**         * @param context         */        SurfaceHolder holder;        public MyView(Context context) {            super(context);            // TODO Auto-generated constructor stub            holder=this.getHolder();            holder.addCallback(this);        }        @Override        public void surfaceChanged(SurfaceHolder holder, int format, int width,                                   int height) {            // TODO Auto-generated method stub        }        @Override        public void surfaceCreated(SurfaceHolder holder) {            // TODO Auto-generated method stub            new Thread(new MyThread()).start();        }        @Override        public void surfaceDestroyed(SurfaceHolder holder) {            // TODO Auto-generated method stub        }        class MyThread implements Runnable        {            /* (non-Javadoc)             * @see java.lang.Runnable#run()             */            @Override            public void run() {                // TODO Auto-generated method stub                Canvas canvas = holder.lockCanvas(null);//获取画布                Paint mPaint = new Paint();                mPaint.setColor(Color.BLUE);                canvas.drawRect(new RectF(40,60,80,80), mPaint); //前2个参数代表右上角坐标,后2个参数代表右下角坐标                holder.unlockCanvasAndPost(canvas);//解锁画布,提交画好的图像            }        }    }



正弦:


package com.coinvs.testsurfaceview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.view.SurfaceHolder;import android.view.SurfaceView;/** * Created by 七喜 on 2017/5/3. */public class sinview extends SurfaceView implements SurfaceHolder.Callback, Runnable {    private SurfaceHolder holder;    private Canvas mCanvas;    private Paint mPaint;    private Path mPath;    public sinview(Context context) {        super(context);        holder=this.getHolder();        holder.addCallback(this);        mPaint = new Paint();        mPaint.setColor(Color.RED);        mPath = new Path();        mPaint.setStyle(Paint.Style.STROKE);        mPaint.setStrokeWidth(5);        y = (int)(100*Math.sin(x*2*Math.PI/180)+400);        mPath.moveTo(x, y);    }    @Override    public void surfaceCreated(SurfaceHolder holder) {        Thread t = new Thread(this);        t.start();    }    @Override    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {    }    @Override    public void surfaceDestroyed(SurfaceHolder holder) {    }    int x = 0;    int y;    @Override    public void run() {         while(true){             x +=1;             y = (int)(100*Math.sin(x*2*Math.PI/180)+400);             mPath.lineTo(x,y);             draw();             try {                 Thread.sleep(10);             } catch (InterruptedException e) {                 e.printStackTrace();             }         }    }    private void draw(){        mCanvas = holder.lockCanvas();        if(mCanvas != null) {            mCanvas.drawColor(Color.BLUE);            mCanvas.drawPath(mPath, mPaint);            holder.unlockCanvasAndPost(mCanvas);        }    }}

画图

package com.coinvs.testsurfaceview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.view.MotionEvent;import android.view.SurfaceHolder;import android.view.SurfaceView;/** * Created by 七喜 on 2017/5/3. */public class touchdraw extends SurfaceView implements SurfaceHolder.Callback, Runnable  {    private SurfaceHolder holder;    private Canvas mCanvas;    private Paint mPaint;    private Path mPath;    private boolean mIsDrawing;    public touchdraw(Context context) {        super(context);        holder=this.getHolder();        holder.addCallback(this);        mPaint = new Paint();        mPaint.setColor(Color.RED);        mPath = new Path();        mPaint.setStyle(Paint.Style.STROKE);        mPaint.setStrokeWidth(5);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        int x = (int) event.getX();        int y = (int) event.getY();        switch (event.getAction()) {            case MotionEvent.ACTION_DOWN:                mPath.moveTo(x, y);                break;            case MotionEvent.ACTION_MOVE:                mPath.lineTo(x, y);                break;            case MotionEvent.ACTION_UP:                break;        }        return true;    }    private void draw(){        mCanvas = holder.lockCanvas();        mCanvas.drawColor(Color.WHITE);        mCanvas.drawPath(mPath,mPaint);        holder.unlockCanvasAndPost(mCanvas);    }    @Override    public void surfaceCreated(SurfaceHolder holder) {        mIsDrawing = true;        Thread t = new Thread(this);        t.start();    }    @Override    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {    }    @Override    public void surfaceDestroyed(SurfaceHolder holder) {        mIsDrawing = false;    }    @Override    public void run() {        while(mIsDrawing){            draw();        }    }}





0 0
原创粉丝点击