源代码:publicclassGameextendsActivity{protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(newFlowerView(this));}staticpubli...
源代码:
public class Game extends Activity {
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(new FlowerView(this));
}
static public class FlowerView extends SurfaceView implements Runnable,Callback
{
Random rand=new Random();
private SurfaceHolder sfh=null;
private boolean isRunning=true;
private Canvas canvas=new Canvas();
private Thread flowerthread=null;
private Paint p=new Paint();
private Bitmap newmap=null;
private Bitmap newmap1=null;
private Matrix matrix=new Matrix();
public FlowerView(Context context) {
super(context);
sfh=getHolder();
sfh.addCallback(this);
// TODO Auto-generated constructor stub
}
public void draw()
{
setBackgroundResource(R.drawable.garden);
}
public void onDraw()
{
Bitmap backgroundmap=BitmapFactory.decodeResource(getResources(), R.drawable.garden);
canvas.drawBitmap(backgroundmap, matrix, null);
int count=rand.nextInt(10);
count=count%4;
switch(count) //Bitmap类
{
case 0:
Bitmap bitmap0 = BitmapFactory.decodeResource(getResources(), R.drawable.flower1);
canvas.drawBitmap(bitmap0,rand.nextFloat()*400,rand.nextFloat()*192, p);
break;
case 1:
Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.flower2);
canvas.drawBitmap(bitmap1,rand.nextFloat()*400,rand.nextFloat()*192, p);
break;
case 2:
Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.flower3);
canvas.drawBitmap(bitmap2,rand.nextFloat()*400,rand.nextFloat()*192, p);
break;
case 3:
Bitmap bitmap3 = BitmapFactory.decodeResource(getResources(), R.drawable.flower4);
canvas.drawBitmap(bitmap3,rand.nextFloat()*400,rand.nextFloat()*192, p);
break;
}
}
public void run() {
// TODO Auto-generated method stub
while(isRunning){
synchronized (sfh) {
canvas=sfh.lockCanvas(); //取得当前画布对象。
//draw();
onDraw();
sfh.unlockCanvasAndPost(canvas);
}
try
{
Thread.sleep(2000);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
isRunning=true;
flowerthread=new Thread(this);
flowerthread.start();
}
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
isRunning=false;
}
}
}
展开