当前位置:操作系统 > 安卓/Android >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,