下面实例中是在一个Activity 中通过上下左右方向键来控制红色小方块的移动,未作边界检测
效果如下:
RectControlActivity.java
package cie.Rect;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
public class RectControlActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//设置窗口没有标题
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏显示
setContentView(new RectControlView(this));
}
}
RectControlView.java
package cie.Rect;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.KeyEvent;
import android.view.View;
public class RectControlView extends View {
int left = 40;
int top = 40;
int width = 40;
int height = 40;
public RectControlView(Context context) {
super(context);
// TODO Auto-generated constructor stub
setFocusable(true);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawRect(left, top, left+width, top+height, paint);
postInvalidate();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode)
{
case KeyEvent.KEYCODE_DPAD_UP:
top = top - 10;
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
top = top + 10;
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
left = left - 10;
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
left = left + 10;
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
}