Android实现摇一摇以及Suface背景透明

首先看一下标准界面


直接上代码,demo下载地址

http://download.csdn.net/detail/controlsxxf/5058548点击打开链接

现在有个问题 ,就是在这个实现主要是继承了SurfaceView类,可是在SurfaceView类中是不能添加控件的,想要添加控件的话请看这里:

在你需要这个界面的xml文件中添加一个FrameLayout

 <FrameLayout 
      android:layout_width="fill_parent"  
      android:layout_height="wrap_content"  
      android:layout_weight="1" >
     
     <xf.eat.GameView
         android:id="@+id/view3d"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"/>
 </FrameLayout>

代码中  xf.eat.GameView   换成你自己放GaveView类的包名,实现后就如下图所示,分成了三个部分,由红色线分开,第一部分是一个Layout,其中有TextView,第二部分是源代码中的GameView,第三部分是一个Layout,里面是一个Button,其中 蝴蝶是我把小球换成了蝴蝶



为了保证小球能在画布里像运动一样,需要每次都重新绘制,代码如下:

canvas = this.holder.lockCanvas();// 获取当前画布
			canvas.drawColor(Color.WHITE);// 清屏
			mBall.draw(canvas, paint);
这样做了以后,每次都是用白色重新绘制了画布,不能实现自定义背景,但是如果我们给这个canvas添加一个背景图片你会发现,小球动的慢死,因为你每次都用一张图片去重新绘制,所以浪费资源

所以我想到的办法就是让canvas背景变成透明色,这样只需要在总的layout下添加一个背景即可实现canvas背景透明的方法 改掉第二句话:

canvas=this.holder.lockCanvas();//获取当前的画布
			
		    canvas.drawColor(Color.TRANSPARENT,Mode.CLEAR);//清理屏幕
			Paint cleanPaint=new Paint();
			cleanPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
			canvas.drawPaint(cleanPaint);
			cleanPaint.setXfermode(new PorterDuffXfermode(Mode.SRC));
			
			
			mBall.draw(canvas,paint);

这样做就可以了;
先写这些 canvas和SurfaceView的知识以后在补上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值