我也来开发2048之方块设计
Posted cynchanpin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我也来开发2048之方块设计相关的知识,希望对你有一定的参考价值。
这次我们的任务是实现游戏面板上的一个个小方块。我们的主面板是一个GridLayout,我们把小方块一个个加到GridLayout中,就形成了我们如今的这个游戏面板。
小方块还是比較简单的,关键是,怎样做才干最有效率呢?这是我们一直考虑的,也算是职业强迫症吧,我们的小方块上事实上就是显示一个数字,所以,我们能够用一个TextView或者ImageView。这个任意了,看以后的打算。是否须要自己定义图片呀等等,我们临时就用一个TextView吧。简单。
父布局选择什么呢?事实上由于我们就一个子View,所以什么布局都一样的啦,可是,还是为了效率考虑,首选FrameLayout,这个是几大布局中最简单。效率最高的了。
ok,我们还要为这个小方块实现一些方法:
1、设置显示的数字
2、依据数字设置背景颜色
3、一系列的get、set方法。这个能够在后面程序设计的时候再做
package com.xys.game2048.bean; import android.content.Context; import android.graphics.Color; import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; public class GameItem extends FrameLayout { // Item显示数字 private int cardShowNum; // Item显示颜色 private int colorShow; // 数字Title private TextView tvNum; // 数字Title LayoutParams private LayoutParams params; public GameItem(Context context, int cardShowNum) { super(context); this.cardShowNum = cardShowNum; // 初始化Item initCardItem(); } /** * 初始化Item * * @param context * @param cardShowNum */ private void initCardItem() { // 设置背景色 setBackgroundColor(Color.GRAY); tvNum = new TextView(getContext()); setNum(cardShowNum); tvNum.setTextSize(30); tvNum.setGravity(Gravity.CENTER); params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); params.setMargins(5, 5, 5, 5); addView(tvNum, params); } public View getItemView() { return tvNum; } public int getNum() { return cardShowNum; } public void setNum(int num) { this.cardShowNum = num; if (num == 0) { tvNum.setText(""); } else { tvNum.setText("" + num); } // 设置背景颜色 switch (num) { case 0: tvNum.setBackgroundColor(0x00000000); break; case 2: tvNum.setBackgroundColor(0xffeee4da); break; case 4: tvNum.setBackgroundColor(0xffede0c8); break; case 8: tvNum.setBackgroundColor(0xfff2b179); break; case 16: tvNum.setBackgroundColor(0xfff59563); break; case 32: tvNum.setBackgroundColor(0xfff67c5f); break; case 64: tvNum.setBackgroundColor(0xfff65e3b); break; case 128: tvNum.setBackgroundColor(0xffedcf72); break; case 256: tvNum.setBackgroundColor(0xffedcc61); break; case 512: tvNum.setBackgroundColor(0xffedc850); break; case 1024: tvNum.setBackgroundColor(0xffedc53f); break; case 2048: tvNum.setBackgroundColor(0xffedc22e); break; default: tvNum.setBackgroundColor(0xff3c3a32); break; } } }
以上,背景设置颜色还是自己定义图片。大家都能够自己改动啦
PS 须要源代码的请留意,完好后会发给大家
以上是关于我也来开发2048之方块设计的主要内容,如果未能解决你的问题,请参考以下文章