Android 画图类View与Su易做图ceView之学习
在开发游戏开发中,android相应的提供了几个重要的模块:1、显示界面的视图: Android 提供 View 和 Su易做图ceView
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 类如下:
[java]
package com.example.testondraw;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
/**
* View 是Android中的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘画的画布,这个画布 可以进行任何扩展。
*
* 任何一个View类都只需要重写onDraw方法来实现界面显示。
*
*/
public class TestView extends View {
int miCount = 0;
int x = 10, y = 10;
public TestView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
if (miCount < 100)
{
miCount++;
}
else
{
miCount = 0;
}
//绘图
Paint mPaint = new Paint();
switch (miCount%4)
{
case 0:
mPaint.setColor(Color.BLUE);
break;
case 1:
mPaint.setColor(Color.GREEN);
break;
case 2:
mPaint.setColor(Color.RED);
break;
case 3:
mPaint.setColor(Color.YELLOW);
break;
default:
mPaint.setColor(Color.WHITE);
break;
}
// 绘制矩形
canvas.drawRect(x, y, x + 120, y + 80, mPaint);
}
}
如何在 Acitivty 使用呢?示例代码如下:
[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;
public class MainActivity extends Activity {
static final String TAG = "MainActivity";
private TestView mTestView = null;
private TestSu易做图ceView mTestSu易做图ceView = null;
private int mWidth = 0, mHeight = 0;
private MyHandler mHandler = new MyHandler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
startTestView();
// setContentView(R.layout.main);
}
void initView() {
// 使用自定义的View
mTestView = new TestView(this);
setContentView(mTestView);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
mWidth = dm.widthPixels;
mHeight = dm.heightPixels;
Log.i(TAG, "Display Metrics width:" + mWidth + " mHeight:" + mHeight);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
void startTestView() {
Thread th = new Thread(new Runnable() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// 使用postInvalidate可以直接在线程中更新界面
// mT
补充:移动开发 , Android ,