扩展Android可绘制资源

时间:2015-02-27 02:37:15

标签: java android android-button

我正在制作一个简单的棋盘游戏,它使用桌面视图和按钮阵列作为棋盘方格。我的movePlayer获取目标行和列,在该行和列中放置一个标记,并用一个按钮替换其先前的位置。

我的movePlayer方法是:

private void movePlayer(int moveToRow, int moveToCol, Button buttons[][])
{
    int oldRow = player.getPlayerRow();
    int oldCol = player.getPlayerCol();
    Button oldPosition = buttons[oldRow][oldCol];
    int oldWidth = oldPosition.getWidth();
    int oldHeight = oldPosition.getHeight();
    Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(),
            android.R.drawable.btn_default);
    Bitmap scaledBitmap = Bitmap.createScaledBitmap(originalBitmap, oldWidth, oldHeight, true);
    Resources resource = getResources();
    oldPosition.setBackground(new BitmapDrawable(resource, scaledBitmap));
    player.setPlayerRow(moveToRow);
    player.setPlayerCol(moveToCol);
    addPlayerToken(moveToRow, moveToCol, buttons);
}

我得到了error java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:596) at foo.bar.minions.GameBoard.movePlayer(GameBoard.java:219)

如果我将android.R.drawable.btn_default替换为R.drawable.foo之类的可绘制内容,则此代码有效。

如果我使用int oldWidth替换oldPosition.setBackgroundResource(android.R.drawable.btn_default);下的所有内容,代码也会有效 但按钮没有正确缩放或看起来不像其他按钮。作为参考,我使用tableRow.addView(button);来创建我的按钮。

如何让我的按钮看起来一样?

1 个答案:

答案 0 :(得分:0)

修正了问题,因为使用tableRow.addView(button);绘制的按钮与android.R.drawable.btn_default的图像不同,因此修复只是在button.setBackgroundResource(android.R.drawable.btn_default);之前添加了tableRow.addView(button);

相关问题