今天又温习了一遍Java的进程。正好用Android写了一个小Demo,具体就是在手机屏幕上显示多个运动的小球,小球碰到手机屏幕边缘会自动弹回。大概就是下面图中显示的:
该本主要的结束的是自定义View封装,View视图绘制,通过xml文件自定义View属性并设置属性,多线程Thread,小球碰撞弹回简单算法。
下面是制作这个Demo的简单步骤:
step1:自定义一个View抽象类,它封装了View类的基本方法,以及多线程的创建和操作方法。具体代码如下:
<span style="font-size:12px;">package com.example.constumeview;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;
public abstract class BaseCustomeView extends View {
private MyThread myThread = null;
private class MyThread extends Thread{
@Override
public void run() {
while(true){
logicalDo();
postInvalidate(); //通知更新界面,会重新调用onDraw()函数
try{
sleep(80);
}catch(Exception e){
e.printStackTrace();
}
}
}
}
public abstract void logicDo(); //逻辑处理方法
public abstract void drawSub(Canvas canvas); //绘画内容代码
public abstract void initView();
@Override
protected void onDraw(Canvas canvas) {
if(myThread == null){ //第一次调用onDraw()方法的时候会创建一个线程,用来实现小球的碰撞弹回
initView();<span style="white-space:pre"> </span>//初始化View方法
myThread = new MyThread();
myThread.start(); //启动线程
}else{
drawSub(canvas); //如果线程以创建,则调用绘制方法
}
}
public BaseCustomeView(Context context) {
super(context);
}
public BaseCustomeView(Context context, AttributeSet attrs) {
super(context,