Java 安卓画棋子

Java 安卓画棋子,java,android,bitmap,draw,Java,Android,Bitmap,Draw,我目前正在开发一个android版的国际象棋,但我对draw有一个问题。我已经建立了一个ChessboardView类,该类扩展了view并使用另一个名为Tile的助手类。问题是,我的所有片段都被绘制在正确的位置(我的调试器在单击平铺时显示我正在命中的片段),但所有图像都显示为黑色皇后(我认为这是我的switch语句中命中的最后一个案例,因为当我去掉它时,所有片段都会变成黑色的车)。以下是相关代码: ChessboardView.java: protected void onDraw(final

我目前正在开发一个android版的国际象棋,但我对draw有一个问题。我已经建立了一个ChessboardView类,该类扩展了view并使用另一个名为Tile的助手类。问题是,我的所有片段都被绘制在正确的位置(我的调试器在单击平铺时显示我正在命中的片段),但所有图像都显示为黑色皇后(我认为这是我的switch语句中命中的最后一个案例,因为当我去掉它时,所有片段都会变成黑色的车)。以下是相关代码:

ChessboardView.java:

protected void onDraw(final Canvas canvas){
    final int width = getWidth();
    final int height = getHeight();
    this.squareSize = Math.min(
            getSquareSizeWidth(width),
            getSquareSizeHeight(height)
    );
    getOrigins(width,height);
    for(int col = 0; col < NUM_RC; col++){
        for(int row = 0; row < NUM_RC; row++){
            final int xCoord = getXCoord(col);
            final int yCoord = getYCoord(row);
            final Rect tileRect = new Rect(xCoord,yCoord,xCoord+squareSize,yCoord+squareSize);
            String loc = getRowString(row) + getColumnString(col);
            String piece = Chessboard.getPieceAtLocation(loc);
            tiles[col][row].setTileRect(tileRect);
            tiles[col][row].draw(canvas,piece,getContext());
        }
    }
}

您需要设置一个
中断在每个案例的结尾处。否则,它将崩溃并执行下一个case。

@atg963和大括号(
{}
)是冗余的;在开关/案例块中,每个案例的语句由
案例x:
break
分隔,除了
开关()之后的外部大括号
开关/案例块不需要大括号。示例和更多信息:@gabeschen:我知道你写答案已经有一段时间了,但我觉得未来的访问者可以在你的答案中加入这一点。
public void draw(Canvas canvas,String piece, Context c){
    canvas.drawRect(tileRect, tileColor);
    if(!piece.equals("  ") && !piece.equals("##")){
        Bitmap pieceBM = null;
        switch(piece) {
            case "wp": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_pawn);
            }
            case "wK": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_king);
            }
            case "wB": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_bishop);
            }
            case "wN": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_knight);
            }
            case "wR": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_rook);
            }
            case "wQ": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.white_queen);
            }
            case "bp": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_pawn);
            }
            case "bK": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_king);
            }
            case "bB": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_bishop);
            }
            case "bN": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_knight);
            }
            case "bR": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_rook);
            }
            case "bQ": {
                pieceBM = BitmapFactory.decodeResource(c.getResources(), R.drawable.black_queen);
            }
        }
        canvas.drawBitmap(pieceBM,null,tileRect,null);
    }
}