Chinaunix首页 | 论坛 | 博客
  • 博客访问: 77819
  • 博文数量: 131
  • 博客积分: 2805
  • 博客等级: 少校
  • 技术积分: 1055
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-25 18:41
文章分类

全部博文(131)

文章存档

2012年(32)

2011年(99)

最近访客

分类: Java

2011-11-15 09:04:38

 

本例程实现的功能是让屏幕上得矩形每个0.5秒改变一次颜色,下面是代码

GameView.java代码

package lau.com; 

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.view.View;

 

public class GameView extends View {

 

    Paint mPaint = null;

    int miCount = 0;

    public GameView(Context context) {

        super(context);

        mPaint = new Paint();

    }

 

    protected void onDraw(Canvas canvas) {

        // TODO Auto-generated method stub

        super.onDraw(canvas);

        miCount++;

        if(100 == miCount) {

            miCount = 0;

        }

        switch(miCount%4) {

        case 0:

            mPaint.setColor(Color.BLUE);

            break;

        case 1:

            mPaint.setColor(Color.RED);

            break;

        case 2:

            mPaint.setColor(Color.GREEN);

            break;

        case 3:

            mPaint.setColor(Color.WHITE);

            break;

        default:

            break;

        }

        canvas.drawRect(100, 100, 100+40, 100+40, mPaint);

    }

}

 

AndroidPratice.java代码

package lau.com;

 

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

 

public class AndroidPractice extends Activity {

   

    private final static int REFRESH = 1;   

    GameView mGameView = null;

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    mGameView = new GameView(this);

    setContentView(mGameView);

    new Thread(r).start();

    }   

   

    Handler mHandler = new Handler() {

        public void handleMessage(Message msg) {

            // TODO Auto-generated method stub

            super.handleMessage(msg);

            switch(msg.what) {

            case REFRESH:

                mGameView.invalidate();  ///////////这一句要特别注意,实现刷新画布功能      

                break;

            default:

                break;

            }

        }       

    };

   

    Runnable r = new Runnable() {

        public void run() {

            // TODO Auto-generated method stub

            while(true) {

                Message msg = new Message();

                msg.what = REFRESH;

                mHandler.sendMessage(msg);

                try {

                    Thread.sleep(500);

                } catch (InterruptedException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

            }

        }

    };   

}

这里要注意handler的用法,实现了子线程与主线程的通信。

Android中还提供了一个更新界面的方法postInvalidate。

 

阅读(511) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~