Android 游戏开发之 View 框架

MainActivity.java:

 

package com.soai.view;

import android.os.Bundle;
import android.app.Activity;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {

    @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));
    }
}

MyView.java:

 

package com.soai.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;

/**
 *
 * @author SoAi
 *
 */
public class MyView extends View {
 private int textX = 20,textY = 20;
 
 public MyView(Context context) {
  super(context);
  setFocusable(true);
 }
 
 @Override
 protected void onDraw(Canvas canvas) {
  //创建一个画笔实例
  Paint paint = new Paint();
  paint.setColor(Color.RED);
  //绘制文本
  canvas.drawText("Game", textX, textY, paint);
  super.onDraw(canvas);
 }
 
 @Override
 public boolean onTouchEvent(MotionEvent event) {
  //获取用户触屏的X轴赋值给文本的X坐标
  textX = (int)event.getX();
  //获取用户触屏的Y轴赋值给文本的Y坐标
  textY = (int)event.getY();
  invalidate(); 
  return true;
 }

}

 

MyView需要继承View,实现里面的onDraw(Canvas canvas)方法,Canvas为画布类相当于一张白纸,而Paint为画笔类恰好是画图工具的笔,利用这两个类可以很好的实现游戏中的绘图。

调用invalidate()方法 则重新绘图一下,也就是调用onDraw()方法一次。如果在其它类中调用,则需要调用postInvalidate();这个方法。

 

Теги:
Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.
Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.