【问题标题】:Scaling Android drawable resource缩放 Android 可绘制资源
【发布时间】:2015-04-29 15:57:17
【问题描述】:

我正在制作一个简单的棋盘游戏,它使用表格视图和按钮阵列作为棋盘方格。我的 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); 创建我的按钮。

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

【问题讨论】:

    标签: java android android-button


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多