@Override
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    Resources r = this.getContext().getResources();

    // mBrickGrid = mPuzzle.CreateNewPuzzle(mXBrickCount, mYBrickCount);

    mXBrickCount = mPuzzle.getXBrickCount();
    mYBrickCount = mPuzzle.getYBrickCount();

    mBrickGrid = mPuzzle.GetPuzzle();

    if (w > h) {
      mBrickSize = (int) Math.floor(h / mYBrickCount);
    } else {
      mBrickSize = (int) Math.floor(w / mXBrickCount);
    }

    resetBricks(29);

    loadBrick(NUM_0, r.getDrawable(R.drawable.pic_0_def));
    loadBrick(NUM_1, r.getDrawable(R.drawable.pic_1_def));
    loadBrick(NUM_2, r.getDrawable(R.drawable.pic_2_def));
    loadBrick(NUM_3, r.getDrawable(R.drawable.pic_3_def));
    loadBrick(NUM_4, r.getDrawable(R.drawable.pic_4_def));
    loadBrick(NUM_5, r.getDrawable(R.drawable.pic_5_def));
    loadBrick(NUM_6, r.getDrawable(R.drawable.pic_6_def));
    loadBrick(NUM_7, r.getDrawable(R.drawable.pic_7_def));
    loadBrick(NUM_8, r.getDrawable(R.drawable.pic_8_def));
    loadBrick(NUM_9, r.getDrawable(R.drawable.pic_9_def));
    loadBrick(OP_PL, r.getDrawable(R.drawable.pic_add_def));
    loadBrick(OP_MN, r.getDrawable(R.drawable.pic_min_def));
    loadBrick(OP_MT, r.getDrawable(R.drawable.pic_mul_def));
    loadBrick(OP_EQ, r.getDrawable(R.drawable.pic_eq_def));
    loadBrick(BLANK, r.getDrawable(R.drawable.pic_blk));
    loadBrick(NUM_0_D, r.getDrawable(R.drawable.pic_0_d));
    loadBrick(NUM_1_D, r.getDrawable(R.drawable.pic_1_d));
    loadBrick(NUM_2_D, r.getDrawable(R.drawable.pic_2_d));
    loadBrick(NUM_3_D, r.getDrawable(R.drawable.pic_3_d));
    loadBrick(NUM_4_D, r.getDrawable(R.drawable.pic_4_d));
    loadBrick(NUM_5_D, r.getDrawable(R.drawable.pic_5_d));
    loadBrick(NUM_6_D, r.getDrawable(R.drawable.pic_6_d));
    loadBrick(NUM_7_D, r.getDrawable(R.drawable.pic_7_d));
    loadBrick(NUM_8_D, r.getDrawable(R.drawable.pic_8_d));
    loadBrick(NUM_9_D, r.getDrawable(R.drawable.pic_9_d));
    loadBrick(OP_PL_D, r.getDrawable(R.drawable.pic_add_d));
    loadBrick(OP_MN_D, r.getDrawable(R.drawable.pic_min_d));
    loadBrick(OP_MT_D, r.getDrawable(R.drawable.pic_mul_d));
    loadBrick(OP_EQ_D, r.getDrawable(R.drawable.pic_eq_d));

    mXOffset = ((w - (mBrickSize * mXBrickCount)) / 2);
    mYOffset = ((h - (mBrickSize * mYBrickCount)) / 2);
  }