android学习点点滴滴(二)

来源:互联网 发布:java编写菱形图案 编辑:程序博客网 时间:2024/05/02 00:27

下面是根据书上而写出的一个简单的控制飞机移动的代码:

这是主程序planeGame的源程序:

package com.example.testaction;import android.app.Activity;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.Display;import android.view.KeyEvent;import android.view.View;import android.view.Window;import android.view.WindowManager;public class PlaneGame extends Activity {private int speed=20;//定义飞机的移动速度,可以根据实际需要更改。@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);//实现这个Activity不显示标题,Activity中有这个方法 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//让这个Activity全屏显示,具体方法可查看api final PlaneView planeview=new PlaneView(this);setContentView(planeview);planeview.setBackgroundResource(R.drawable.black);/*//这三行实现用java写的布局文件,个人认为为什么不用XML布局的原因是比较难处理它的位置吧,而用java代码却很方便很容易的把它处理*/WindowManager windowmanager=getWindowManager();Display display=windowmanager.getDefaultDisplay();DisplayMetrics metrics=new DisplayMetrics();display.getMetrics(metrics);planeview.currentX=metrics.widthPixels/2;planeview.currentY=metrics.heightPixels/2;planeview.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {// TODO Auto-generated method stubswitch(event.getKeyCode()){case KeyEvent.KEYCODE_W:planeview.currentY-=speed;break;case KeyEvent.KEYCODE_S:planeview.currentY+=speed;break;case KeyEvent.KEYCODE_A:planeview.currentX-=speed;break;case KeyEvent.KEYCODE_D:planeview.currentX+=speed;}planeview.invalidate();/*一定要这条语句,要不能图片的位置不会刷新。*/return true;}});/*设置键盘监听事件,用w s a d控制上下左右移动。*/}}
以下是通过java文件实现的布局文件的代码,
package com.example.testaction;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.view.View;public class PlaneView extends View {public float currentX;public float currentY;    Bitmap plane;public PlaneView(Context context) {super(context);// TODO Auto-generated constructor stubplane=BitmapFactory.decodeResource(context.getResources(),R.drawable.plane1);setFocusable(true);}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);Paint p=new Paint();canvas.drawBitmap(plane,currentX,currentY,p);} }

0 0