ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

我也来开发2048之方块设计

2021-05-20 07:07:07  阅读:148  来源: 互联网

标签:case cardShowNum tvNum setBackgroundColor 2048 break import 设计 方块


这次我们的任务是实现游戏面板上的一个个小方块,我们的主面板是一个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 需要源码的请留意,完善后会发给大家

标签:case,cardShowNum,tvNum,setBackgroundColor,2048,break,import,设计,方块
来源: https://blog.51cto.com/u_9894631/2790726

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有