Android Game --触控屏幕来移动字体

完成一个字可以通过玩家触控屏幕来移动:

一.重写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));
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值