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
- 倒计时 小例子 SurfaceView
- SurfaceView小例子
- 视频播放 小例子 SurfaceView
- SurfaceView简单例子
- SurfaceView简单例子
- 小例子
- 【Android SurfaceView】视频播放器 简单例子
- SurfaceView入门和一个简单例子
- SurfaceView的一个小应用:开发示波器
- 在SurfaceView上拖动一张小图片
- surfaceview
- SurfaceView
- surfaceview
- surfaceview
- SurfaceView
- SurfaceView
- SurfaceView
- SurfaceView
- ZOJ 3964 Yet Another Game of Stones (博弈)
- 进阶篇_类型打包专家tuple
- 刷leetcode 经历与总结
- ## Nginx 配置
- 正则
- SurfaceView小例子
- 第二行代码学习笔记——第五章:全局大喇叭——详解广播机制
- 模块化开发
- 设备树学习之(三)Clock
- HDFS文件写入与读取
- 从零开始 React Native (4) React入门_状态属性_生命周期
- NYOJ257郁闷的C小加(一)_中缀转后缀
- Hive,Hbase,HDFS,MapReduce等之间的关系
- Alamofire报错:dyld: Library not loaded