自定义组件

1.先定义好组件

package com.test;

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 {

 int miCount = 0;
 int y = 0;
 public GameView(Context context) {
  super(context);
  // TODO Auto-generated constructor stub
 }
 
 //绘制自定义的组件
 @Override
 protected void onDraw(Canvas canvas) {
  // TODO Auto-generated method stub
  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.RED);
    break;
   case 2:
    mPaint.setColor(Color.GREEN);
    break;
   case 3:
    mPaint.setColor(Color.YELLOW);
    break;
   default:
    mPaint.setColor(Color.WHITE);
    break;    
  }
  //绘制矩形
  canvas.drawRect((320-80)/2,y,(320-80)/2+80,y+40,mPaint);
 }
 

}

2.使用组件

package com.test;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;

public class Test0907 extends Activity {

 private static final int REFRESH = 0x000001;
 private GameView mGameView = null;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.mGameView=new GameView(this);
        Log.v("tag","填充");
        setContentView(mGameView);
        //开启线程
        Log.v("tag","开启线程");
        new Thread(new GameThread()).start();
    }
    Handler myHandler = new Handler()
    {

  @Override
  public void handleMessage(Message msg) {
   // TODO Auto-generated method stub
   switch(msg.what)
   {
   case Test0907.REFRESH:
    mGameView.invalidate();
    break;    
   }
   super.handleMessage(msg);
  }
     
    };
 public class GameThread implements Runnable {

  @Override
  public void run() {
   Log.v("tag","子线程开始运行");
   // TODO Auto-generated method stub
          while(!Thread.currentThread().isInterrupted())
          {
           Message message = new Message();
           message.what=Test0907.REFRESH;
           Test0907.this.myHandler.sendMessage(message);
           try
           {
            Thread.sleep(1000);
           }
           catch(InterruptedException e)
           {
            Thread.currentThread().interrupt();
           }
          }
  }
 }
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  // TODO Auto-generated method stub
  switch(keyCode)
  {
  case KeyEvent.KEYCODE_DPAD_UP:
   mGameView.y-=3;
   break;
  case KeyEvent.KEYCODE_DPAD_DOWN:
   mGameView.y+=3;
   break;
  }
  return false;
 }
 @Override
 public boolean onKeyUp(int keyCode, KeyEvent event) {
  // TODO Auto-generated method stub
  return true;
 }
 
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值