下面我们来编写主程序。在创建工程时会要求输入一个“Create Activity”,由于我们输入的是“Main”,因此,生成的主类就是Main.java。打开Main.java文件,输入如下的代码。
package mobile.android.ch02.first;
import java.util.Random;
import mobile.android.first.CircleCanvas.CircleInfo;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
public class Main extends Activity
{
private CircleCanvas mCircleCanvas; // 定义一个画布类
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// 装载布局文件(在2.2.3节配置的main.xml文件)
ViewGroup viewGroup = (ViewGroup)getLayoutInflater().inflate(R.layout.main, null);
mCircleCanvas = new CircleCanvas(this); // 创建CircleCanvas(画布类)对象
// 将CircleCanvas对象添加到当前界面的视图中(两个按钮的下方)
viewGroup.addView(mCircleCanvas, new LayoutParams(LayoutParams.FILL_PARENT, 350));
setContentView(viewGroup);
}
// 开始随机绘制圆形(第一个按钮的单击事件)
public void onClick_DrawRandomCircle(View view)
{
Random random = new Random();
float randomX =(float)( 100 + random.nextInt(100)); // 随机生成圆心横坐标(100至200)
float randomY =(float)( 100 + random.nextInt(100)); // 随机生成圆心纵坐标(100至200)
float randomRadius =(float)( 20 + random.nextInt(40)); // 随机生成圆的半径(20至60)
int randomColor = 0;
// 产生0至100的随机数,若产生的随机数大于50,则画笔颜色为蓝色
if(random.nextInt(100) > 50)
{
randomColor = Color.BLUE;
}
else
{
// 产生0至100的随机数,若产生的随机数大于50,则画笔颜色为红色
if(random.nextInt(100) > 50)
randomColor = Color.RED;
// 否则,画笔颜色为绿色
else
randomColor = Color.GREEN;
}
CircleInfo circleInfo = new CircleInfo();
circleInfo.setX(randomX);
circleInfo.setY(randomY);
circleInfo.setRadius(randomRadius);
circleInfo.setColor(randomColor);
mCircleCanvas.mCircleInfos.add(circleInfo); // 将当前绘制的实心圆信息加到List对象中
mCircleCanvas.invalidate(); // 使画布重绘
}
// 清空画布(第二个按钮的单击事件)
public void onClick_Clear(View view)
{
mCircleCanvas.mCircleInfos.clear(); // 清除绘制历史
mCircleCanvas.invalidate(); // 使画布重绘
}
}