• 我也来开发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 须要源代码的请留意,完好后会发给大家

  • 相关阅读:
    解决远程连接mysql很慢的方法(网络正常)
    分布式系统中可用性及容错性的区别
    设计模式个人思考
    记第一次多用户在Git提交代码
    Git远程分支的回退
    Linux模拟控制网络时延
    ubuntu 软件
    编译cubieboard android 源码过程详解之(六):pack
    编译cubieboard android 源码过程详解之(五):make
    编译cubieboard android 源码过程详解之(四):extract-bsp
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6821204.html
Copyright © 2020-2023  润新知