android SurfaceView使用
来源:互联网 发布:足疗店软件 编辑:程序博客网 时间:2024/06/06 00:18
SurfaceView绘制在子线程中,而且采用双缓冲策略,提高绘制效率.
/** * Created by fung on 2016/3/2. */public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback,Runnable { private SurfaceHolder holder; private Canvas mCanvas; private Paint mPaint; private boolean flag; private float x,y; private float LastX,LastY; private Path mPath; public MySurfaceView(Context context) { this(context,null); } public MySurfaceView(Context context, AttributeSet attrs) { this(context, null, 0); } public MySurfaceView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); holder=this.getHolder(); holder.addCallback(this); this.setFocusable(true); this.setFocusableInTouchMode(true); this.setKeepScreenOn(true); mPaint=new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setColor(Color.BLACK); mPaint.setStrokeWidth(3); mPaint.setStyle(Paint.Style.STROKE); mPath=new Path(); } @Override public void surfaceCreated(SurfaceHolder holder) { flag=true; //开启线程绘制 new Thread(this).start(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { flag=false; } @Override public boolean onTouchEvent(MotionEvent event) { x= (int) event.getX(); 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; } LastX=x; LastY=y; return true; } @Override public void run() { while (flag){ draw();/* LastX=x; LastY=y;*/ /*x=x+1; y= (int) (400+Math.sin(x*2*Math.PI/180)*100); mPath.lineTo(x,y);*/ // mPath.moveTo(x,y); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } /** * 绘制 */ private void draw() { try { mCanvas=holder.lockCanvas(); //绘制背景 mCanvas.drawColor(Color.WHITE); mCanvas.drawRect(new RectF(x,y,x+100,y+100),mPaint); }catch (Exception E){ }finally { if(mCanvas!=null){ holder.unlockCanvasAndPost(mCanvas); } } }}
0 0
- Android的SurfaceView使用
- Android surfaceview使用详解
- [Android] SurfaceView使用实例
- Android SurfaceView使用 笔记
- Android SurfaceView使用
- Android SurfaceView使用详解
- [Android] SurfaceView使用实例
- android中surfaceView使用
- [Android] SurfaceView使用实例
- [Android] SurfaceView使用实例
- Android使用SurfaceView画图
- Android的SurfaceView使用
- Android SurfaceView简单使用
- android SurfaceView使用
- Android之SurfaceView使用
- Android SurfaceView使用详解
- Android--SurfaceView使用详解
- Android SurfaceView使用详解
- 【高性能】Matlab的并行计算之spmd
- Android中SharedPreferences的使用
- 解决SharePoint 的Excel文件, 使用本地打开Excel 2013“无法访问文件。请尝试下列方法之一”
- Redis性能测试——redis-benchmark使用教程
- 数据科学界华山论剑:R与Python巅峰对决
- android SurfaceView使用
- 如何在Jmeter中使用外部的java文件
- 算法导论第三版习题8.3
- JavaScript中读取和保存文件实例
- SQL语句
- Qt浅谈之四十六QemuQuestAgent的应用
- 插件小结(一)没有自由的国度
- Leetcode(7) - medium1
- 版本控__Adobe CC 2015的福利