一、计划内容
在高级的版本中,都是可以看见下一方块的样子,为接下来的一步,做好准备。
二、下一块预览
2.1、布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#20000000">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="下一块"
android:gravity="center"
/>
<FrameLayout
android:id="@+id/fl_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</FrameLayout>
2.2、实例化
//得到父容器
fl_next=findViewById(R.id.fl_next);
//实例化下一块预览
nextPanel=new View(this){
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
gamecontrol.drawNext(canvas,nextPanel.getWidth());
}
};
//设置大小
nextPanel.setLayoutParams(new FrameLayout.LayoutParams(-1,400));
//添加到父容器里面
fl_next.addView(nextPanel);
2.3、绘制图案
//绘制下一块预览
public void drawNext(Canvas canvas, int width) {
//方块
if(nextboxs!=null) {
if(nextboxSize==0) {
nextboxSize = width / 5;
for (int i = 0; i < nextboxs.length; i++) {
canvas.drawRect(
(nextboxs[i].x - 3) * nextboxSize,
(nextboxs[i].y+1) * nextboxSize,
(nextboxs[i].x - 3) * nextboxSize + nextboxSize,
(nextboxs[i].y+1) * nextboxSize + nextboxSize, boxPaint);
}
}else {
for (int i = 0; i < nextboxs.length; i++) {
canvas.drawRect(
(nextboxs[i].x - 3) * nextboxSize,
(nextboxs[i].y+1) * nextboxSize,
(nextboxs[i].x - 3) * nextboxSize + nextboxSize,
(nextboxs[i].y+1) * nextboxSize + nextboxSize, boxPaint);
}
}
}
}
三、报错
目前测出来,是最后一个方块,与次一个重叠部分有缺,就可以往缺的部分移动。
经查验,虚拟机的问题,调试建议实机进行。
四、结果
明显可以看出下一块的形状是什么。