完成一个字可以通过玩家触控屏幕来移动:
一.重写View类的方法:
涉及需要重写的方法有如下几个:
1.构造函数
2.绘图函数onDraw
3.按键按下事件函数onKeyDown
4.按键抬起事件函数onKeyUp
5.触屏事件函数onTouchEvent
二.Activity中一些有些界面的简单操作
1.隐藏标题栏 ,应用程序名字显示部分
this.requestWindowFeature.(Window.FEATURE_NO_TITLE);
2.隐藏状态栏 ,屏幕的一切修饰部分
this.getWindow().setFlags(WindowManager.LayoutParms.FLAG_FULLSCREEN,WindowManager.LayoutParams.FAL_FULLSCREEN);
Example:
重写的View代码如下:
package com.gv;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
public class MyView extends View {
//设置文本起始位置
private int textX = 50, textY = 50;
public MyView(Context context) {
super(context);
//设置View接收焦点
setFocusable(true);
}
/**
* 重写绘图函数
*/
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
//创造画笔
Paint paint = new Paint();
//设置画笔的颜色为白色
paint.setColor(Color.WHITE);
//绘制测试文本
canvas.drawText("按键或手指触屏可以移动我喔", textX, textY, paint);
super.onDraw(canvas);
}
/**
* 重写按键按下函数
*
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
//判定用户按下的事件
if(keyCode == KeyEvent.KEYCODE_DPAD_UP){
//方向为“上”的按键被点击,Y坐标变小
textY -=2;
}else if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN){
//方向为“下”的按键被点击,Y坐标变大
textY +=2;
}else if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT){
//方向为“左”的按键被点击,X坐标变小
textX -=2;
}else if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){
//方向为“右”的按键被点击,X坐标变大
textX +=2;
}
//重新绘制画布
invalidate();
return super.onKeyDown(keyCode, event);
}
/**
*
* 重写按键抬起事件
*
*/
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
return super.onKeyUp(keyCode, event);
}
/**
* 重写触摸屏事件
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
//将用户
textX = (int) event.getX();
textY = (int) event.getY();
//重绘画布
invalidate();
return true;
}
}
Activity代码如下:
package com.gv;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//测试时 , 不小心漏写后程序报错
setContentView(new MyView(this));
}
}