package com.game.Model; import android.content.Context; import android.text.TextPaint; import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import com.game.R; public class Card extends FrameLayout { private TextView label; private View background; private int num = 0; public Card(Context context) { super(context); LayoutParams lp = null; background = new View(getContext()); lp = new LayoutParams(-1, -1); lp.setMargins(10, 10, 0, 0); background.setBackgroundColor(getResources().getColor( R.color.normalCardBack)); addView(background, lp); label = new TextView(getContext()); label.setTextSize(28); label.setGravity(Gravity.CENTER); TextPaint tp = label.getPaint(); tp.setFakeBoldText(true); lp = new LayoutParams(-1, -1); lp.setMargins(10, 10, 0, 0); addView(label, lp); setNum(0); } public int getNum() { return num; } public void setNum(int num) { this.num = num; if (num <= 0) { label.setText(""); } else { label.setText(num + ""); } switch (num) { case 0: label.setBackgroundResource(R.color.normalCardBack); break; case 2: label.setTextColor(getResources().getColor(R.color._2Font)); label.setBackgroundResource(R.color._2Back); break; case 4: label.setTextColor(getResources().getColor(R.color._4Font)); label.setBackgroundResource(R.color._4Back); break; case 8: label.setTextColor(getResources().getColor(R.color.otherFont)); label.setBackgroundResource(R.color._8Back); break; case 16: label.setTextColor(getResources().getColor(R.color.otherFont)); label.setBackgroundResource(R.color._16Back); break; case 32: label.setTextColor(getResources().getColor(R.color.otherFont)); label.setBackgroundResource(R.color._32Back); break; case 64: label.setTextColor(getResources().getColor(R.color.otherFont)); label.setBackgroundResource(R.color._64Back); break; case 128: label.setTextColor(getResources().getColor(R.color.otherFont)); label.setBackgroundResource(R.color._128Back); break; case 256: label.setTextColor(getResources().getColor(R.color.otherFont)); label.setBackgroundResource(R.color._256Back); break; case 512: label.setTextColor(getResources().getColor(R.color.otherFont)); label.setBackgroundResource(R.color._512Back); break; case 1024: label.setTextColor(getResources().getColor(R.color.otherFont)); label.setBackgroundResource(R.color._1024Back); break; case 2048: label.setTextColor(getResources().getColor(R.color.otherFont)); label.setBackgroundResource(R.color._2048Back); break; default: label.setTextColor(getResources().getColor(R.color._2Font)); label.setBackgroundResource(R.color._2Back); break; } } public boolean equals(Card o) { return getNum() == o.getNum(); } protected Card clone() { Card c = new Card(getContext()); c.setNum(getNum()); return c; } public TextView getLabel() { return label; } }