读书频道 > 网站 > 网页设计 > 想到做到:Android开发关键技术与精彩案例
9.1.2 方块渲染
12-08-06    叶孤城
收藏    我要投稿   
这不是一本只讲android开发技术的图书,本书让开发者站在移动互联产业链条上思考自己该怎么做本书按照入门篇、进阶篇和游戏篇三大部分,结合37个案例系统全面地介绍Android应用和游戏开发的知识。结合实践和设计模...立即去当当网订购

用Shape类定义了方块的数据结构之后,下面就要实现方块的定义和渲染了。首先,应该能够确定方块左上角的坐标,其中x坐标用left表示,y坐标用top表示。由于整个方块用4×4的数组表示,因此左上角实际上是4维数组的第一个位置的左上角。这里我们不定义砖块的宽度,而是根据屏幕的分辨率在运行时确定,以达到适配多种分辨率的需求。Brick类的成员变量和构造器如下所示。
public class Brick extends View {
 public static final int PADDING = 1;
 //左顶点(x,y)
 public int left;
 public int top;
 //数据模型
 private Shape shape;
 //屏幕
 private Screen parent;
 private TextPaint paint = new TextPaint();

 public Brick(Context context, AttributeSet attrs) {
  super(context, attrs);
 }

 public Brick(Context context) {
  super(context);
 }

 public Brick(Screen screen) {
  this(screen.getContext());
  parent = screen;
 }
}
Brick类扩展了View类,是典型的自定义View。Brick的渲染工作是在onDraw()方法中实现的。绘制方块,需要遍历整个4×4的数组,忽略位置为0的方块,对于值为1的位置进行绘制。为了实现方块带边框的效果,这里使用了一个简单的方法,首先在外围用一种颜色绘制一个正方形,然后用另一种颜色绘制一个长度小于两个像素的正方形,两个正方形的重心一致,这样看上去就像是带边框的方块了。当然,也可以使用图片实现。onDraw()方法如下所示。
@Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  int x = left;
  int y = top;
  int[] data = shape.getData();
  for (int i = 0; i < data.length; i++) {
   //如果data[i]不等于0,绘制方格
   if (data[i] != 0) {
    int r = i / 4;
    int c = i % 4;
    int l = x + c * parent.bWidth;
    int t = y + r * parent.bWidth;
    paint.setColor(Color.parseColor("#f7faf3"));
    //绘制外面大的方格
    canvas.drawRect(l, t, l + parent.bWidth, t + parent.bWidth, paint);
    //绘制里面小的方格,看上去像是给小方格增加了一个边框
    paint.setColor(Color.parseColor("#4c8e0b"));
    canvas.drawRect(l + PADDING, t + PADDING, l + parent.bWidth -   PADDING,t + parent.bWidth - PADDING, paint);
   }
  }
 }
在Brick类中还定义了向左、向右、向下移动的方法,以及和背景的边框碰撞检测的方法。这些内容将在下面进行介绍

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站