View与SurfaceView 的区别用法

一、View是没有缓存机制的,每次绘图都是重新绘制

如果要实用双缓冲机制的话。

1、自定义一个View 实现onDraw方法

2、调用这个方法,调用刷新onDraw()方法

	ssinView.postInvalidate();

 

需要格外创建一个Canvas,每次都

3、

	public void onDraw(Canvas canvas){
		
		if(x >= 480){
			x = 0;
			//清空画布
			canvas.drawColor(Color.BLACK); 
			//重新创建一个新的图
			bitmap = Bitmap.createBitmap(480, 104, Config.ARGB_8888);     

		}else{
			//在缓冲中将之前的图绘制好,然后在真正的Canvas上绘制缓冲中的图
			Canvas c = new Canvas();
			c.setBitmap(bitmap);
			int y = (int)(A*Math.sin(x/180.0f*Math.PI));
			System.out.println("==================y:"+y+"===x:"+x);
			c.drawPoint(x, y+A, paint);
			//canvas.save();
			canvas.drawBitmap(bitmap, 0, 0,paint);
			x+=5;
		}
	}

 二、Surface实现了双缓冲技术

提供了一个类SurfaceHolder

1、继承SurfaceView 实现Callback接口(在new SurfaceView的时候会自动回调)

2、刷新SurfaceView

			// TODO Auto-generated method stub
			super.run();
			while(flag == true){
				
				//锁定,获得Canvas
				Canvas canvas = surfaceHolder.lockCanvas(null);
			
				onDraw(canvas);
				//释放锁
				surfaceHolder.unlockCanvasAndPost(canvas);
				
				asinSurfaceView.x += 5;
				
				try {
					Thread.sleep(sleepTime);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值