?? tileview.java
字號(hào):
package com.google.andriod.tetris;
import android.content.Context;
import android.content.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import java.util.Map;
public class TileView extends View{
protected static int mTileSize;
protected static int mXTileCount;
protected static int mYTileCount;
private static int mXOffset;
private static int mYOffset;
private Bitmap mTileImage;
private int[][] mTileGrid;
private final Paint mPaint = new Paint();
public TileView(Context context, AttributeSet attrs, Map inflateParams,
int defStyle){
super(context, attrs, inflateParams, defStyle);
Resources.StyledAttributes a = context.obtainStyledAttributes(attrs,
R.styleable.TileView);
mTileSize = a.getInt(R.styleable.TileView_tileSize, 16);
}
public TileView(Context context, AttributeSet attrs, Map inflateParams){
super(context, attrs, inflateParams);
Resources.StyledAttributes a = context.obtainStyledAttributes(attrs,
R.styleable.TileView);
mTileSize = a.getInt(R.styleable.TileView_tileSize,16);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh){
mXTileCount = (int)Math.floor(w / mTileSize);
mYTileCount = (int)Math.floor(h / mTileSize);
mXOffset = ((w - (mTileSize * mXTileCount)) / 2);
mYOffset = ((h - (mTileSize * mYTileCount)) / 2);
mTileGrid = new int[mXTileCount][mYTileCount];
clearTiles();
}
public void loadTile(Drawable tile){
Bitmap bitmap = Bitmap.createBitmap(mTileSize, mTileSize, true);
Canvas canvas = new Canvas(bitmap);
tile.setBounds(0, 0, mTileSize, mTileSize);
tile.draw(canvas);
mTileImage = bitmap;
}
public void clearTiles(){
for(int x = 0; x < mXTileCount; x++){
for(int y=0; y < mYTileCount; y++){
setTile(0, x, y);
}
}
}
public void setTile(int tileindex, int x, int y){
mTileGrid[x][y] = tileindex;
}
public int checkTile(int x, int y){
if(x>=0 && x<mXTileCount && y>=0 && y<mYTileCount)
return mTileGrid[x][y];
else
return -1;
}
public int destroyRow(){
int full=1;
int lines = 0;
for(int j=0; j<mYTileCount; j++){
for(int i=0; i<mXTileCount; i++){
if(0==mTileGrid[i][j]){
full=0;
break;
}
}
if(1==full){
lines++;
mTileGrid[0][j] = -1;
}
full = 1;
}
for(int j= mYTileCount-1; j>0; j--){
if(-1==mTileGrid[0][j]){
for(int k=j; k>0; k--){
for(int i=0; i<mXTileCount-1; i++){
mTileGrid[i][k] = mTileGrid[i][k-1];
}
}
j++;
}
}
return lines;
}
@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
for(int x = 0; x < mXTileCount; x++){
for(int y=0; y < mYTileCount; y++){
if(mTileGrid[x][y] > 0){
canvas.drawBitmap(mTileImage,
mXOffset + x * mTileSize,
mYOffset + y * mTileSize,
mPaint);
}
}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -