View类常需要实现的抽象函数
public class MyView extends View { public MyView(Context context) { super(context); } /** * 该方法在该View实例化的时候自动就调用了 */ @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); } /** * 按键按下的事件 */ @Override public boolean onKeyDown(int KeyCode,KeyEvent event) { return true; } /** * 按键按上的事件 */ @Override public boolean onKeyUp(int KeyCode,KeyEvent event) { return true; } /** * 触摸事件 */ @Override public boolean onTouchEvent(MotionEvent event){ return true; } }
下面 用上面提到的方法进行绘制图片并让它动起来
public class MyView extends View { Paint paint; float x, y; // x,y坐标 float srceenW,srceenH; //手机屏幕的宽高 public MyView(Context context,float srceenW,float srceenH) { super(context); paint = new Paint(); paint.setStyle(Style.STROKE); //设置画笔的样式 paint.setAntiAlias(true); this.srceenH=srceenH; this.srceenW=srceenW; } /** * 该方法在该View实例化的时候自动就调用了 默认只执行一次 */ @Override public void onDraw(Canvas canvas) { canvas.drawColor(Color.WHITE); //设置背景 paint.setColor(Color.BLACK); //画笔的颜色 canvas.drawText("Play Game", x, y, paint); //绘制 字幕 super.onDraw(canvas); } /** * 按键按下的事件 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return super.onKeyDown(keyCode, event); } /** * 按键按上的事件 */ @Override public boolean onKeyUp(int keyCode, KeyEvent event) { return super.onKeyUp(keyCode, event); } /** * 触摸事件 */ @Override public boolean onTouchEvent(MotionEvent event) {//将画的图移动到手触摸的位置 x= event.getX(); //重新设置字幕的绘制位置 y= event.getY(); invalidate(); //重绘 再次调用onDraw方法 return super.onTouchEvent(event); } }
最后在Activity里面调用
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置手机全盘 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); //获取手机屏幕宽高 Display display=getWindowManager().getDefaultDisplay(); setContentView(new MyView(this, display.getWidth(), display.getHeight())); }
这样我们调用手机屏幕的位置,“Play Game”字就会在什么位置显示