首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android 画图种View与SurfaceView之学习

2013-10-13 
Android画图类View与SurfaceView之学习在开发游戏开发中,android相应的提供了几个重要的模块:1、显示界面的

Android 画图类View与SurfaceView之学习

在开发游戏开发中,android相应的提供了几个重要的模块:

1、显示界面的视图:  Android 提供 View 和 SurfaceView 

2、控制游戏整体结构: android 提供 Activity 

3、逻辑控制类:专门用于处理游戏的逻辑计算

4、处理游戏界面与用户交互事件 : 利用 View 类提供的 onKeyDown onKeyUp onTounchEvent等方法


我们这里简单熟悉一下如何在视图上画东西。


1、View 类: android.view.View 

View 是Android中的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘画的画布,这个画布 可以进行任何扩展。

任何一个View类都只需要重写onDraw方法来实现界面显示,任何一个View都只需要重写 OnDraw 方法来实现界面显示,自定义的视图可以是复杂的3D实现,也可以是非常简单的文本或位图。


Android 中有个重要的东东: Android UI 线程 

在这里 http://blog.csdn.net/andyhuabing/article/details/11921887 有对其简要精典的介绍及注意点,这里就不再重复说明了。


这里来个简单例子说明一下View的用法,利用线程变更显示颜色,通过上下左右移动矩形


TestView.java 类如下:

package com.example.testondraw;import java.util.List;import android.app.Activity;import android.app.ActivityManager;import android.content.Context;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.DisplayMetrics;import android.util.Log;import android.view.KeyEvent;import android.view.Menu;import android.view.SurfaceHolder;import android.view.SurfaceView;public class MainActivity extends Activity {static final String TAG = "MainActivity";private TestSurfaceView mTestSurfaceView = null;private int mWidth = 0, mHeight = 0;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initView();startTestSurfaceView();// setContentView(R.layout.main);}void initView() {// 使用自定义的ViewmTestSurfaceView = new TestSurfaceView(this);setContentView(mTestSurfaceView);DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);mWidth = dm.widthPixels;mHeight = dm.heightPixels;Log.i(TAG, "Display Metrics width:" + mWidth + " mHeight:" + mHeight);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_DPAD_DOWN:if (mTestSurfaceView.y >= mHeight)mTestSurfaceView.y = 0;mTestSurfaceView.y += 10;break;case KeyEvent.KEYCODE_DPAD_UP:if (mTestSurfaceView.y <= 0)mTestSurfaceView.y = mHeight;mTestSurfaceView.y -= 10;break;case KeyEvent.KEYCODE_DPAD_LEFT:if (mTestSurfaceView.x <= 0)mTestSurfaceView.x = mWidth;mTestSurfaceView.x -= 10;break;case KeyEvent.KEYCODE_DPAD_RIGHT:if (mTestSurfaceView.x >= mWidth)mTestSurfaceView.x = 0;mTestSurfaceView.x += 10;break;case KeyEvent.KEYCODE_BACK:this.finish();break;}return false;};void startTestSurfaceView() {mTestSurfaceView.setDisplayWH(mWidth, mHeight);        }}


热点排行